Skip to content

Commit

Permalink
usb: dwc2: gadget: Add IOT device IDs, configure core accordingly
Browse files Browse the repository at this point in the history
Add new device IDs for IOT gadget. Done changes in probe to
configure core accordingly depending on device ID value.

Signed-off-by: Vardan Mikayelyan <mvardan@synopsys.com>
Signed-off-by: John Youn <johnyoun@synopsys.com>
Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
  • Loading branch information
Vardan Mikayelyan authored and Felipe Balbi committed Nov 18, 2016
1 parent 79c3b5b commit 1e6b98e
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 1 deletion.
18 changes: 18 additions & 0 deletions drivers/usb/dwc2/core.h
Original file line number Diff line number Diff line change
Expand Up @@ -950,6 +950,8 @@ struct dwc2_hsotg {
#define DWC2_CORE_REV_2_94a 0x4f54294a
#define DWC2_CORE_REV_3_00a 0x4f54300a
#define DWC2_CORE_REV_3_10a 0x4f54310a
#define DWC2_FS_IOT_REV_1_00a 0x5531100a
#define DWC2_HS_IOT_REV_1_00a 0x5532100a

#if IS_ENABLED(CONFIG_USB_DWC2_HOST) || IS_ENABLED(CONFIG_USB_DWC2_DUAL_ROLE)
union dwc2_hcd_internal_flags {
Expand Down Expand Up @@ -1078,6 +1080,22 @@ enum dwc2_halt_status {
DWC2_HC_XFER_URB_DEQUEUE,
};

/* Core version information */
static inline bool dwc2_is_iot(struct dwc2_hsotg *hsotg)
{
return (hsotg->hw_params.snpsid & 0xfff00000) == 0x55300000;
}

static inline bool dwc2_is_fs_iot(struct dwc2_hsotg *hsotg)
{
return (hsotg->hw_params.snpsid & 0xffff0000) == 0x55310000;
}

static inline bool dwc2_is_hs_iot(struct dwc2_hsotg *hsotg)
{
return (hsotg->hw_params.snpsid & 0xffff0000) == 0x55320000;
}

/*
* The following functions support initialization of the core driver component
* and the DWC_otg controller
Expand Down
9 changes: 8 additions & 1 deletion drivers/usb/dwc2/params.c
Original file line number Diff line number Diff line change
Expand Up @@ -1276,7 +1276,9 @@ int dwc2_get_hwparams(struct dwc2_hsotg *hsotg)
*/
hw->snpsid = dwc2_readl(hsotg->regs + GSNPSID);
if ((hw->snpsid & 0xfffff000) != 0x4f542000 &&
(hw->snpsid & 0xfffff000) != 0x4f543000) {
(hw->snpsid & 0xfffff000) != 0x4f543000 &&
(hw->snpsid & 0xffff0000) != 0x55310000 &&
(hw->snpsid & 0xffff0000) != 0x55320000) {
dev_err(hsotg->dev, "Bad value for GSNPSID: 0x%08x\n",
hw->snpsid);
return -ENODEV;
Expand Down Expand Up @@ -1418,6 +1420,11 @@ int dwc2_init_params(struct dwc2_hsotg *hsotg)
else
params = params_default;

if (dwc2_is_fs_iot(hsotg)) {
params.speed = DWC2_SPEED_PARAM_FULL;
params.phy_type = DWC2_PHY_TYPE_PARAM_FS;
}

dwc2_set_parameters(hsotg, &params);

return 0;
Expand Down

0 comments on commit 1e6b98e

Please sign in to comment.