- ahcd = hcd_to_admhcd(hcd);
- dev_set_drvdata(pdev, ahcd);
- hcd->self.controller = pdev;
- //hcd->self.bus_name = pdev->bus_id;
- hcd->irq = pdev->resource[1].start;
- hcd->regs = (void *)pdev->resource[0].start;
- hcd->product_desc = hcd_name;
- ahcd->base = pdev->resource[0].start;
-
- if (request_irq(pdev->resource[1].start, adm5120hcd_irq, 0, hcd_name,
- hcd)) {
- pr_debug("couldn't request irq\n");
+ if (!addr || !data || irq < 0) {
+ err = -ENODEV;
+ goto out;
+ }
+
+ if (pdev->dev.dma_mask) {
+ printk(KERN_DEBUG "DMA not supported\n");
+ err = -EINVAL;
+ goto out;
+ }
+
+ if (!request_mem_region(addr->start, 2, hcd_name)) {
+ err = -EBUSY;
+ goto out;
+ }
+ addr_reg = ioremap(addr->start, resource_len(addr));
+ if (addr_reg == NULL) {
+ err = -ENOMEM;
+ goto out_mem;
+ }
+ if (!request_mem_region(data->start, 2, hcd_name)) {