+ if (pdev->num_resources < 3) {
+ err = -ENODEV;
+ goto out;
+ }
+
+ if (pdev->dev.dma_mask) {
+ printk(KERN_DEBUG "no we won't dma\n");
+ return -EINVAL;
+ }
+
+ irq = platform_get_irq(pdev, 0);
+ data = platform_get_resource(pdev, IORESOURCE_MEM, 0);
+ addr = platform_get_resource(pdev, IORESOURCE_MEM, 1);
+
+ if (!addr || !data || irq < 0) {
+ err = -ENODEV;
+ 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)) {
+ err = -EBUSY;
+ goto out_unmap;
+ }
+
+ data_reg = ioremap(data->start, resource_len(data));
+ if (data_reg == NULL) {
+ err = -ENOMEM;
+ goto out_mem;
+ }
+
+ hcd = usb_create_hcd(&adm5120_hc_driver, &pdev->dev, pdev->dev.bus_id);
+ if (!hcd)
+ goto out_mem;
+
+ hcd->rsrc_start = addr->start;