If ehci platform driver is loaded before the chipidea controller driver,
both are competing for the same IO resources and the generic driver gets
used for the hardware. This results in USB device mode being
unavailable.
Split generic EHCI support code out of kmod-usb2, so that the chipidea
driver can be included without also pulling in the generic one. Also
rework the load order, so that the chipidea driver gets loaded first, in
case both are installed
Signed-off-by: Felix Fietkau <nbd@nbd.name>
KCONFIG:=CONFIG_NOP_USB_XCEIV
HIDDEN:=1
FILES:=$(LINUX_DIR)/drivers/usb/phy/phy-generic.ko
KCONFIG:=CONFIG_NOP_USB_XCEIV
HIDDEN:=1
FILES:=$(LINUX_DIR)/drivers/usb/phy/phy-generic.ko
- AUTOLOAD:=$(call AutoLoad,43,phy-generic)
+ AUTOLOAD:=$(call AutoLoad,21,phy-generic,1)
$(call AddDepends/usb)
endef
$(call AddDepends/usb)
endef
HIDDEN:=1
FILES:=\
$(LINUX_DIR)/drivers/usb/gadget/udc/udc-core.ko
HIDDEN:=1
FILES:=\
$(LINUX_DIR)/drivers/usb/gadget/udc/udc-core.ko
- AUTOLOAD:=$(call AutoLoad,45,udc-core)
+ AUTOLOAD:=$(call AutoLoad,21,udc-core,1)
DEPENDS:=@USB_GADGET_SUPPORT
$(call AddDepends/usb)
endef
DEPENDS:=@USB_GADGET_SUPPORT
$(call AddDepends/usb)
endef
endef
$(eval $(call KernelPackage,usb-ssb))
endef
$(eval $(call KernelPackage,usb-ssb))
+define KernelPackage/usb-ehci
+ TITLE:=EHCI controller support
+ HIDDEN:=1
+ KCONFIG:= \
+ CONFIG_USB_EHCI_HCD
+ FILES:= \
+ $(LINUX_DIR)/drivers/usb/host/ehci-hcd.ko
+ AUTOLOAD:=$(call AutoLoad,35,ehci-hcd,1)
+ $(call AddDepends/usb)
+endef
+$(eval $(call KernelPackage,usb-ehci))
+
define KernelPackage/usb2
TITLE:=Support for USB2 controllers
DEPENDS:=\
+TARGET_brcm47xx:kmod-usb-bcma \
+TARGET_brcm47xx:kmod-usb-ssb \
+TARGET_bcm53xx:kmod-usb-bcma \
define KernelPackage/usb2
TITLE:=Support for USB2 controllers
DEPENDS:=\
+TARGET_brcm47xx:kmod-usb-bcma \
+TARGET_brcm47xx:kmod-usb-ssb \
+TARGET_bcm53xx:kmod-usb-bcma \
- +TARGET_bcm53xx:kmod-phy-bcm-ns-usb2
+ +TARGET_bcm53xx:kmod-phy-bcm-ns-usb2 \
+ +kmod-usb-ehci
+ CONFIG_USB_EHCI_HCD_PLATFORM \
CONFIG_USB_EHCI_BCM63XX=y \
CONFIG_USB_IMX21_HCD=y \
CONFIG_USB_EHCI_MXC=y \
CONFIG_USB_OCTEON_EHCI=y \
CONFIG_USB_EHCI_HCD_ORION=y \
CONFIG_USB_EHCI_BCM63XX=y \
CONFIG_USB_IMX21_HCD=y \
CONFIG_USB_EHCI_MXC=y \
CONFIG_USB_OCTEON_EHCI=y \
CONFIG_USB_EHCI_HCD_ORION=y \
- CONFIG_USB_EHCI_HCD_PLATFORM=y \
CONFIG_USB_EHCI_HCD_AT91=y \
CONFIG_USB_EHCI_FSL
FILES:= \
CONFIG_USB_EHCI_HCD_AT91=y \
CONFIG_USB_EHCI_FSL
FILES:= \
- $(LINUX_DIR)/drivers/usb/host/ehci-hcd.ko \
$(LINUX_DIR)/drivers/usb/host/ehci-platform.ko
ifneq ($(wildcard $(LINUX_DIR)/drivers/usb/host/ehci-orion.ko),)
FILES+=$(LINUX_DIR)/drivers/usb/host/ehci-orion.ko
$(LINUX_DIR)/drivers/usb/host/ehci-platform.ko
ifneq ($(wildcard $(LINUX_DIR)/drivers/usb/host/ehci-orion.ko),)
FILES+=$(LINUX_DIR)/drivers/usb/host/ehci-orion.ko
define KernelPackage/usb-chipidea
TITLE:=Host and device support for Chipidea controllers
define KernelPackage/usb-chipidea
TITLE:=Host and device support for Chipidea controllers
- DEPENDS:=+USB_GADGET_SUPPORT:kmod-usb-gadget @TARGET_ar71xx +kmod-usb2
+ DEPENDS:=+USB_GADGET_SUPPORT:kmod-usb-gadget @TARGET_ar71xx +kmod-usb-ehci
KCONFIG:= \
CONFIG_NOP_USB_XCEIV=y \
CONFIG_EXTCON \
KCONFIG:= \
CONFIG_NOP_USB_XCEIV=y \
CONFIG_EXTCON \
$(LINUX_DIR)/drivers/extcon/extcon.ko@lt4.9 \
$(LINUX_DIR)/drivers/extcon/extcon-core.ko@ge4.9 \
$(LINUX_DIR)/drivers/usb/chipidea/ci_hdrc.ko
$(LINUX_DIR)/drivers/extcon/extcon.ko@lt4.9 \
$(LINUX_DIR)/drivers/extcon/extcon-core.ko@ge4.9 \
$(LINUX_DIR)/drivers/usb/chipidea/ci_hdrc.ko
- AUTOLOAD:=$(call AutoLoad,51,ci_hdrc,0)
+ AUTOLOAD:=$(call AutoLoad,39,ci_hdrc,1)
$(call AddDepends/usb)
endef
$(call AddDepends/usb)
endef