mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-10-05 16:37:50 +00:00
usb: fotg210: Select subdriver by mode
Check which mode the hardware is in, and selecte the peripheral driver if the hardware is in explicit peripheral mode, otherwise select host mode. This should solve the immediate problem that both subdrivers can get probed. Cc: Fabian Vogt <fabian@ritter-vogt.de> Cc: Yuan-Hsin Chen <yhchen@faraday-tech.com> Cc: Felipe Balbi <balbi@kernel.org> Signed-off-by: Linus Walleij <linus.walleij@linaro.org> Link: https://lore.kernel.org/r/20221023144708.3596563-3-linus.walleij@linaro.org Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
aeffd2c3b0
commit
1fac1c4da8
1 changed files with 16 additions and 9 deletions
|
@ -10,30 +10,37 @@
|
|||
#include <linux/of.h>
|
||||
#include <linux/platform_device.h>
|
||||
#include <linux/usb.h>
|
||||
#include <linux/usb/otg.h>
|
||||
|
||||
#include "fotg210.h"
|
||||
|
||||
static int fotg210_probe(struct platform_device *pdev)
|
||||
{
|
||||
struct device *dev = &pdev->dev;
|
||||
enum usb_dr_mode mode;
|
||||
int ret;
|
||||
|
||||
if (IS_ENABLED(CONFIG_USB_FOTG210_HCD)) {
|
||||
ret = fotg210_hcd_probe(pdev);
|
||||
if (ret)
|
||||
return ret;
|
||||
}
|
||||
if (IS_ENABLED(CONFIG_USB_FOTG210_UDC))
|
||||
mode = usb_get_dr_mode(dev);
|
||||
|
||||
if (mode == USB_DR_MODE_PERIPHERAL)
|
||||
ret = fotg210_udc_probe(pdev);
|
||||
else
|
||||
ret = fotg210_hcd_probe(pdev);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int fotg210_remove(struct platform_device *pdev)
|
||||
{
|
||||
if (IS_ENABLED(CONFIG_USB_FOTG210_HCD))
|
||||
fotg210_hcd_remove(pdev);
|
||||
if (IS_ENABLED(CONFIG_USB_FOTG210_UDC))
|
||||
struct device *dev = &pdev->dev;
|
||||
enum usb_dr_mode mode;
|
||||
|
||||
mode = usb_get_dr_mode(dev);
|
||||
|
||||
if (mode == USB_DR_MODE_PERIPHERAL)
|
||||
fotg210_udc_remove(pdev);
|
||||
else
|
||||
fotg210_hcd_remove(pdev);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue