|
@@ -14,7 +14,7 @@
|
|
#include <linux/module.h>
|
|
#include <linux/module.h>
|
|
#include <mach/qmgr.h>
|
|
#include <mach/qmgr.h>
|
|
|
|
|
|
-struct qmgr_regs __iomem *qmgr_regs;
|
|
|
|
|
|
+static const struct qmgr_regs __iomem *qmgr_regs = (void __iomem *)IXP4XX_QMGR_BASE_VIRT;
|
|
static struct resource *mem_res;
|
|
static struct resource *mem_res;
|
|
static spinlock_t qmgr_lock;
|
|
static spinlock_t qmgr_lock;
|
|
static u32 used_sram_bitmap[4]; /* 128 16-dword pages */
|
|
static u32 used_sram_bitmap[4]; /* 128 16-dword pages */
|
|
@@ -32,7 +32,7 @@ void qmgr_set_irq(unsigned int queue, int src,
|
|
|
|
|
|
spin_lock_irqsave(&qmgr_lock, flags);
|
|
spin_lock_irqsave(&qmgr_lock, flags);
|
|
if (queue < HALF_QUEUES) {
|
|
if (queue < HALF_QUEUES) {
|
|
- u32 __iomem *reg;
|
|
|
|
|
|
+ const u32 __iomem *reg;
|
|
int bit;
|
|
int bit;
|
|
BUG_ON(src > QUEUE_IRQ_SRC_NOT_FULL);
|
|
BUG_ON(src > QUEUE_IRQ_SRC_NOT_FULL);
|
|
reg = &qmgr_regs->irqsrc[queue >> 3]; /* 8 queues per u32 */
|
|
reg = &qmgr_regs->irqsrc[queue >> 3]; /* 8 queues per u32 */
|
|
@@ -293,12 +293,6 @@ static int qmgr_init(void)
|
|
if (mem_res == NULL)
|
|
if (mem_res == NULL)
|
|
return -EBUSY;
|
|
return -EBUSY;
|
|
|
|
|
|
- qmgr_regs = ioremap(IXP4XX_QMGR_BASE_PHYS, IXP4XX_QMGR_REGION_SIZE);
|
|
|
|
- if (qmgr_regs == NULL) {
|
|
|
|
- err = -ENOMEM;
|
|
|
|
- goto error_map;
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
/* reset qmgr registers */
|
|
/* reset qmgr registers */
|
|
for (i = 0; i < 4; i++) {
|
|
for (i = 0; i < 4; i++) {
|
|
__raw_writel(0x33333333, &qmgr_regs->stat1[i]);
|
|
__raw_writel(0x33333333, &qmgr_regs->stat1[i]);
|
|
@@ -347,8 +341,6 @@ static int qmgr_init(void)
|
|
error_irq2:
|
|
error_irq2:
|
|
free_irq(IRQ_IXP4XX_QM1, NULL);
|
|
free_irq(IRQ_IXP4XX_QM1, NULL);
|
|
error_irq:
|
|
error_irq:
|
|
- iounmap(qmgr_regs);
|
|
|
|
-error_map:
|
|
|
|
release_mem_region(IXP4XX_QMGR_BASE_PHYS, IXP4XX_QMGR_REGION_SIZE);
|
|
release_mem_region(IXP4XX_QMGR_BASE_PHYS, IXP4XX_QMGR_REGION_SIZE);
|
|
return err;
|
|
return err;
|
|
}
|
|
}
|
|
@@ -359,7 +351,6 @@ static void qmgr_remove(void)
|
|
free_irq(IRQ_IXP4XX_QM2, NULL);
|
|
free_irq(IRQ_IXP4XX_QM2, NULL);
|
|
synchronize_irq(IRQ_IXP4XX_QM1);
|
|
synchronize_irq(IRQ_IXP4XX_QM1);
|
|
synchronize_irq(IRQ_IXP4XX_QM2);
|
|
synchronize_irq(IRQ_IXP4XX_QM2);
|
|
- iounmap(qmgr_regs);
|
|
|
|
release_mem_region(IXP4XX_QMGR_BASE_PHYS, IXP4XX_QMGR_REGION_SIZE);
|
|
release_mem_region(IXP4XX_QMGR_BASE_PHYS, IXP4XX_QMGR_REGION_SIZE);
|
|
}
|
|
}
|
|
|
|
|
|
@@ -369,7 +360,6 @@ module_exit(qmgr_remove);
|
|
MODULE_LICENSE("GPL v2");
|
|
MODULE_LICENSE("GPL v2");
|
|
MODULE_AUTHOR("Krzysztof Halasa");
|
|
MODULE_AUTHOR("Krzysztof Halasa");
|
|
|
|
|
|
-EXPORT_SYMBOL(qmgr_regs);
|
|
|
|
EXPORT_SYMBOL(qmgr_set_irq);
|
|
EXPORT_SYMBOL(qmgr_set_irq);
|
|
EXPORT_SYMBOL(qmgr_enable_irq);
|
|
EXPORT_SYMBOL(qmgr_enable_irq);
|
|
EXPORT_SYMBOL(qmgr_disable_irq);
|
|
EXPORT_SYMBOL(qmgr_disable_irq);
|