• Sascha Hauer's avatar
    USB: chipidea: i.MX: simplify usbmisc · 05986ba9
    Sascha Hauer authored
    The chipidea i.MX driver is split into two drivers. The ci_hdrc_imx driver
    handles the chipidea cores and the usbmisc_imx driver handles the noncore
    registers common to all chipidea cores (but SoC specific). Current flow is:
    
    - usbmisc sets an ops pointer in the ci_hdrc_imx driver during probe
    - ci_hdrc_imx checks if the pointer is valid during probe, if yes calls
      the functions in the ops pointer.
    - usbmisc_imx calls back into the ci_hdrc_imx driver to get additional
      data
    
    This is overly complicated and has problems if the drivers are compiled
    as modules. In this case the usbmisc_imx driver can be unloaded even if
    the ci_hdrc_imx driver still needs usbmisc functionality.
    
    This patch changes this by letting the ci_hdrc_imx driver calling functions
    from the usbmisc_imx driver. This way the symbol resolving during module
    load makes sure the ci_hdrc_imx driver depends on the usbmisc_imx driver.
    
    Also instead of letting the usbmisc_imx driver call back into the ci_hdrc_imx
    driver, pass the needed data in the first place.
    Signed-off-by: default avatarSascha Hauer <s.hauer@pengutronix.de>
    Acked-by: default avatarPeter Chen <peter.chen@freescale.com>
    Signed-off-by: default avatarAlexander Shishkin <alexander.shishkin@linux.intel.com>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    05986ba9
ci_hdrc_imx.h 615 Bytes