Skip to content
Closed
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 21 additions & 1 deletion drivers/usb/dwc3/dwc3-generic-plat.c
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,8 @@
#include <linux/reset.h>
#include <linux/regmap.h>
#include <linux/mfd/syscon.h>
#include <linux/regulator/consumer.h>
#include <linux/usb/otg.h>
#include "glue.h"

#define EIC7700_HSP_BUS_FILTER_EN BIT(0)
Expand Down Expand Up @@ -69,6 +71,20 @@ static int dwc3_eic7700_init(struct dwc3_generic *dwc3g)
return 0;
}

static int dwc3_spacemit_k1_init(struct dwc3_generic *dwc3g)
{
struct device *dev = dwc3g->dev;

if (usb_get_dr_mode(dev) == USB_DR_MODE_HOST) {
int ret = devm_regulator_get_enable_optional(dev, "vbus");

if (ret && ret != -ENODEV)
return dev_err_probe(dev, ret, "failed to enable VBUS\n");
}

return 0;
}

static int dwc3_generic_probe(struct platform_device *pdev)
{
const struct dwc3_generic_config *plat_config;
Expand Down Expand Up @@ -210,10 +226,14 @@ static const struct dwc3_generic_config eic7700_dwc3 = {
.properties = DWC3_DEFAULT_PROPERTIES,
};

static const struct dwc3_generic_config spacemit_k1_dwc3 = {
.init = dwc3_spacemit_k1_init,
};

static const struct of_device_id dwc3_generic_of_match[] = {
{ .compatible = "spacemit,k1-dwc3", },
{ .compatible = "fsl,ls1028a-dwc3", &fsl_ls1028_dwc3},
{ .compatible = "eswin,eic7700-dwc3", &eic7700_dwc3},
{ .compatible = "spacemit,k1-dwc3", &spacemit_k1_dwc3},
{ /* sentinel */ }
};
MODULE_DEVICE_TABLE(of, dwc3_generic_of_match);
Expand Down