diff --git a/target/linux/bcm53xx/patches-3.18/190-bcma_hcd_add_bcm5301x_support.patch b/target/linux/bcm53xx/patches-3.18/190-bcma_hcd_add_bcm5301x_support.patch
index 2e528b6a0b08e0f89728d0cd0a1903e95ef5105a..bffb7ae05271014ca98af96fcdeb3e5ecdf8e157 100644
--- a/target/linux/bcm53xx/patches-3.18/190-bcma_hcd_add_bcm5301x_support.patch
+++ b/target/linux/bcm53xx/patches-3.18/190-bcma_hcd_add_bcm5301x_support.patch
@@ -76,42 +76,20 @@ Signed-off-by: Felix Fietkau <nbd@openwrt.org>
  		return -ENODEV;
  
  	/* TODO: Probably need checks here; is the core connected? */
-@@ -234,18 +281,23 @@ static int bcma_hcd_probe(struct bcma_de
+@@ -234,7 +281,12 @@ static int bcma_hcd_probe(struct bcma_de
  	if (!usb_dev)
  		return -ENOMEM;
  
 -	bcma_hcd_init_chip(dev);
--
--	/* In AI chips EHCI is addrspace 0, OHCI is 1 */
--	ohci_addr = dev->addr_s[0];
--	if ((chipinfo->id == 0x5357 || chipinfo->id == 0x4749)
--	    && chipinfo->rev == 0)
--		ohci_addr = 0x18009000;
--
--	usb_dev->ohci_dev = bcma_hcd_create_pdev(dev, true, ohci_addr);
--	if (IS_ERR(usb_dev->ohci_dev)) {
--		err = PTR_ERR(usb_dev->ohci_dev);
--		goto err_free_usb_dev;
 +	if (IS_BUILTIN(CONFIG_ARCH_BCM_5301X) &&
 +	    chipinfo->id == BCMA_CHIP_ID_BCM4707) {
 +		bcma_hcd_init_chip_arm(dev);
 +	} else if(IS_BUILTIN(CONFIG_BCM47XX)) {
 +		bcma_hcd_init_chip_mips(dev);
-+
-+		/* In AI chips EHCI is addrspace 0, OHCI is 1 */
-+		ohci_addr = dev->addr_s[0];
-+		if ((chipinfo->id == 0x5357 || chipinfo->id == 0x4749)
-+			&& chipinfo->rev == 0)
-+			ohci_addr = 0x18009000;
-+
-+		usb_dev->ohci_dev = bcma_hcd_create_pdev(dev, true, ohci_addr);
-+		if (IS_ERR(usb_dev->ohci_dev)) {
-+			err = PTR_ERR(usb_dev->ohci_dev);
-+			goto err_free_usb_dev;
-+		}
- 	}
++	}
  
- 	usb_dev->ehci_dev = bcma_hcd_create_pdev(dev, false, dev->addr);
+ 	/* In AI chips EHCI is addrspace 0, OHCI is 1 */
+ 	ohci_addr = dev->addr_s[0];
 @@ -306,6 +358,7 @@ static int bcma_hcd_resume(struct bcma_d
  
  static const struct bcma_device_id bcma_hcd_table[] = {