]> git.karo-electronics.de Git - mv-sheeva.git/blobdiff - drivers/usb/c67x00/c67x00-drv.c
include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit...
[mv-sheeva.git] / drivers / usb / c67x00 / c67x00-drv.c
index f8189bdbd06d2c97e1d2e14924343d1bef503b24..b6d49234e5217a9fd0779944469790cef5f479d0 100644 (file)
 #include <linux/device.h>
 #include <linux/io.h>
 #include <linux/list.h>
+#include <linux/slab.h>
 #include <linux/usb.h>
 #include <linux/usb/c67x00.h>
 
 #include "c67x00.h"
+#include "c67x00-hcd.h"
 
 static void c67x00_probe_sie(struct c67x00_sie *sie,
                             struct c67x00_device *dev, int sie_num)
@@ -51,6 +53,10 @@ static void c67x00_probe_sie(struct c67x00_sie *sie,
        sie->mode = c67x00_sie_config(dev->pdata->sie_config, sie_num);
 
        switch (sie->mode) {
+       case C67X00_SIE_HOST:
+               c67x00_hcd_probe(sie);
+               break;
+
        case C67X00_SIE_UNUSED:
                dev_info(sie_dev(sie),
                         "Not using SIE %d as requested\n", sie->sie_num);
@@ -66,6 +72,14 @@ static void c67x00_probe_sie(struct c67x00_sie *sie,
 
 static void c67x00_remove_sie(struct c67x00_sie *sie)
 {
+       switch (sie->mode) {
+       case C67X00_SIE_HOST:
+               c67x00_hcd_remove(sie);
+               break;
+
+       default:
+               break;
+       }
 }
 
 static irqreturn_t c67x00_irq(int irq, void *__dev)
@@ -124,13 +138,13 @@ static int __devinit c67x00_drv_probe(struct platform_device *pdev)
        if (!c67x00)
                return -ENOMEM;
 
-       if (!request_mem_region(res->start, res->end - res->start + 1,
+       if (!request_mem_region(res->start, resource_size(res),
                                pdev->name)) {
                dev_err(&pdev->dev, "Memory region busy\n");
                ret = -EBUSY;
                goto request_mem_failed;
        }
-       c67x00->hpi.base = ioremap(res->start, res->end - res->start + 1);
+       c67x00->hpi.base = ioremap(res->start, resource_size(res));
        if (!c67x00->hpi.base) {
                dev_err(&pdev->dev, "Unable to map HPI registers\n");
                ret = -EIO;
@@ -169,7 +183,7 @@ static int __devinit c67x00_drv_probe(struct platform_device *pdev)
  request_irq_failed:
        iounmap(c67x00->hpi.base);
  map_failed:
-       release_mem_region(res->start, res->end - res->start + 1);
+       release_mem_region(res->start, resource_size(res));
  request_mem_failed:
        kfree(c67x00);
 
@@ -195,7 +209,7 @@ static int __devexit c67x00_drv_remove(struct platform_device *pdev)
 
        res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
        if (res)
-               release_mem_region(res->start, res->end - res->start + 1);
+               release_mem_region(res->start, resource_size(res));
 
        kfree(c67x00);