-/* $Id: $ */
/*
* Copyright (c) 2008 Daniel Mueller (daniel@danm.de)
*/
#include <linux/kernel.h>
-#include <linux/byteorder/swab.h>
-#include <linux/byteorder/generic.h>
#include <linux/module.h>
#include <linux/moduleparam.h>
#include <linux/proc_fs.h>
#define DRV_MODULE_NAME "ubsec_ssb"
#define PFX DRV_MODULE_NAME ": "
-#define DRV_MODULE_VERSION "0.01"
-#define DRV_MODULE_RELDATE "Jan 1, 2008"
+#define DRV_MODULE_VERSION "0.02"
+#define DRV_MODULE_RELDATE "Feb 21, 2009"
#if 1
#define DPRINTF(a...) \
err = ssb_bus_powerup(sdev->bus, 0);
if (err) {
dev_err(sdev->dev, "Failed to powerup the bus\n");
- goto err_powerup;
+ goto err_out;
}
err = request_irq(sdev->irq, (irq_handler_t)ubsec_ssb_isr,
goto err_out_powerdown;
}
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,34))
+ err = dma_set_mask(sdev->dma_dev, DMA_BIT_MASK(32)) ||
+ dma_set_coherent_mask(sdev->dma_dev, DMA_BIT_MASK(32));
+#else
err = ssb_dma_set_mask(sdev, DMA_32BIT_MASK);
+#endif
if (err) {
dev_err(sdev->dev,
"Required 32BIT DMA mask unsupported by the system.\n");
- goto err_out_powerdown;
+ goto err_out_free_irq;
}
printk(KERN_INFO "Sentry5(tm) ROBOGateway(tm) IPSec Core at IRQ %u\n",
ssb_device_enable(sdev, 0);
if (ubsec_attach(sdev, ent, sdev->dev) != 0)
- goto err_disable_interrupt;
+ goto err_out_disable;
#ifdef UBSEC_DEBUG
procdebug = create_proc_entry(DRV_MODULE_NAME, S_IRUSR, NULL);
return 0;
-err_disable_interrupt:
+err_out_disable:
+ ssb_device_disable(sdev, 0);
+
+err_out_free_irq:
free_irq(sdev->irq, sdev);
err_out_powerdown:
ssb_bus_may_powerdown(sdev->bus);
-err_powerup:
- ssb_device_disable(sdev, 0);
- return err;
+err_out:
+ return err;
}
static void __devexit ubsec_ssb_remove(struct ssb_device *sdev) {
sc->sc_queuea[i] = NULL;
}
- ssb_bus_may_powerdown(sdev->bus);
ssb_device_disable(sdev, 0);
+ ssb_bus_may_powerdown(sdev->bus);
ssb_set_drvdata(sdev, NULL);
#ifdef UBSEC_DEBUG