--- a/devices/ccat/module.c Tue May 06 17:32:10 2014 +0200
+++ b/devices/ccat/module.c Thu Jun 05 16:07:52 2014 +0200
@@ -56,13 +56,13 @@
struct pci_dev *pdev)
{
struct resource *res;
+
bar->start = pci_resource_start(pdev, index);
bar->end = pci_resource_end(pdev, index);
bar->len = pci_resource_len(pdev, index);
bar->flags = pci_resource_flags(pdev, index);
if (!(IORESOURCE_MEM & bar->flags)) {
- pr_info("bar%llu is no mem_region -> abort.\n",
- (uint64_t) index);
+ pr_info("bar%llu is no mem_region -> abort.\n", (u64) index);
return -EIO;
}
@@ -71,23 +71,23 @@
pr_info("allocate mem_region failed.\n");
return -EIO;
}
- pr_debug("bar%llu at [%lx,%lx] len=%lu res: %p.\n", (uint64_t) index,
+ pr_debug("bar%llu at [%lx,%lx] len=%lu res: %p.\n", (u64) index,
bar->start, bar->end, bar->len, res);
bar->ioaddr = ioremap(bar->start, bar->len);
if (!bar->ioaddr) {
- pr_info("bar%llu ioremap failed.\n", (uint64_t) index);
+ pr_info("bar%llu ioremap failed.\n", (u64) index);
release_mem_region(bar->start, bar->len);
return -EIO;
}
- pr_debug("bar%llu I/O mem mapped to %p.\n", (uint64_t) index,
- bar->ioaddr);
+ pr_debug("bar%llu I/O mem mapped to %p.\n", (u64) index, bar->ioaddr);
return 0;
}
void ccat_dma_free(struct ccat_dma *const dma)
{
const struct ccat_dma tmp = *dma;
+
free_dma(dma->channel);
memset(dma, 0, sizeof(*dma));
dma_free_coherent(tmp.dev, tmp.size, tmp.virt, tmp.phys);
@@ -104,12 +104,12 @@
void __iomem * const ioaddr, struct device *const dev)
{
void *frame;
- uint64_t addr;
- uint32_t translateAddr;
- uint32_t memTranslate;
- uint32_t memSize;
- uint32_t data = 0xffffffff;
- uint32_t offset = (sizeof(uint64_t) * channel) + 0x1000;
+ u64 addr;
+ u32 translateAddr;
+ u32 memTranslate;
+ u32 memSize;
+ u32 data = 0xffffffff;
+ u32 offset = (sizeof(u64) * channel) + 0x1000;
dma->channel = channel;
dma->dev = dev;
@@ -123,13 +123,12 @@
dma->size = 2 * memSize - PAGE_SIZE;
dma->virt = dma_zalloc_coherent(dev, dma->size, &dma->phys, GFP_KERNEL);
if (!dma->virt || !dma->phys) {
- pr_info("init DMA%llu memory failed.\n", (uint64_t) channel);
+ pr_info("init DMA%llu memory failed.\n", (u64) channel);
return -1;
}
if (request_dma(channel, KBUILD_MODNAME)) {
- pr_info("request dma channel %llu failed\n",
- (uint64_t) channel);
+ pr_info("request dma channel %llu failed\n", (u64) channel);
ccat_dma_free(dma);
return -1;
}
@@ -140,9 +139,9 @@
frame = dma->virt + translateAddr - dma->phys;
pr_debug
("DMA%llu mem initialized\n virt: 0x%p\n phys: 0x%llx\n translated: 0x%llx\n pci addr: 0x%08x%x\n memTranslate: 0x%x\n size: %llu bytes.\n",
- (uint64_t) channel, dma->virt, (uint64_t) (dma->phys), addr,
+ (u64) channel, dma->virt, (u64) (dma->phys), addr,
ioread32(ioaddr + offset + 4), ioread32(ioaddr + offset),
- memTranslate, (uint64_t) dma->size);
+ memTranslate, (u64) dma->size);
return 0;
}
@@ -154,13 +153,13 @@
static int ccat_functions_init(struct ccat_device *const ccatdev)
{
/* read CCatInfoBlock.nMaxEntries from ccat */
- const uint8_t num_func = ioread8(ccatdev->bar[0].ioaddr + 4);
+ const u8 num_func = ioread8(ccatdev->bar[0].ioaddr + 4);
void __iomem *addr = ccatdev->bar[0].ioaddr;
const void __iomem *end = addr + (sizeof(CCatInfoBlock) * num_func);
- int status = 0; //count init function failures
+ int status = 0; /* count init function failures */
while (addr < end) {
- const uint8_t type = ioread16(addr);
+ const u8 type = ioread16(addr);
switch (type) {
case CCATINFO_NOTUSED:
break;
@@ -209,6 +208,7 @@
int status;
u8 revision;
struct ccat_device *ccatdev = kmalloc(sizeof(*ccatdev), GFP_KERNEL);
+
if (!ccatdev) {
pr_err("%s() out of memory.\n", __FUNCTION__);
return -ENOMEM;
@@ -261,6 +261,7 @@
static void ccat_remove(struct pci_dev *pdev)
{
struct ccat_device *ccatdev = pci_get_drvdata(pdev);
+
if (ccatdev) {
ccat_functions_remove(ccatdev);
ccat_bar_free(&ccatdev->bar[2]);