Loading drivers/usb/dwc3/core.c +13 −0 Original line number Diff line number Diff line Loading @@ -260,6 +260,17 @@ static void dwc3_event_buffers_cleanup(struct dwc3 *dwc) } } static void dwc3_core_num_eps(struct dwc3 *dwc) { struct dwc3_hwparams *parms = &dwc->hwparams; dwc->num_in_eps = DWC3_NUM_IN_EPS(parms); dwc->num_out_eps = DWC3_NUM_EPS(parms) - dwc->num_in_eps; dev_vdbg(dwc->dev, "found %d IN and %d OUT endpoints\n", dwc->num_in_eps, dwc->num_out_eps); } static void dwc3_cache_hwparams(struct dwc3 *dwc) { struct dwc3_hwparams *parms = &dwc->hwparams; Loading Loading @@ -336,6 +347,8 @@ static int dwc3_core_init(struct dwc3 *dwc) if (dwc->revision < DWC3_REVISION_190A) reg |= DWC3_GCTL_U2RSTECN; dwc3_core_num_eps(dwc); dwc3_writel(dwc->regs, DWC3_GCTL, reg); return 0; Loading drivers/usb/dwc3/core.h +15 −0 Original line number Diff line number Diff line Loading @@ -575,6 +575,14 @@ struct dwc3_hwparams { /* HWPARAMS1 */ #define DWC3_NUM_INT(n) (((n) & (0x3f << 15)) >> 15) /* HWPARAMS3 */ #define DWC3_NUM_IN_EPS_MASK (0x1f << 18) #define DWC3_NUM_EPS_MASK (0x3f << 12) #define DWC3_NUM_EPS(p) (((p)->hwparams3 & \ (DWC3_NUM_EPS_MASK)) >> 12) #define DWC3_NUM_IN_EPS(p) (((p)->hwparams3 & \ (DWC3_NUM_IN_EPS_MASK)) >> 18) /* HWPARAMS7 */ #define DWC3_RAM1_DEPTH(n) ((n) & 0xffff) Loading Loading @@ -641,6 +649,8 @@ struct dwc3_scratchpad_array { * @u2pel: parameter from Set SEL request. * @u1sel: parameter from Set SEL request. * @u1pel: parameter from Set SEL request. * @num_out_eps: number of out endpoints * @num_in_eps: number of in endpoints * @ep0_next_event: hold the next expected event * @ep0state: state of endpoint zero * @link_state: link state Loading @@ -658,8 +668,10 @@ struct dwc3 { dma_addr_t ep0_trb_addr; dma_addr_t ep0_bounce_addr; struct dwc3_request ep0_usb_req; /* device lock */ spinlock_t lock; struct device *dev; struct platform_device *xhci; Loading Loading @@ -727,6 +739,9 @@ struct dwc3 { u8 speed; u8 num_out_eps; u8 num_in_eps; void *mem; struct dwc3_hwparams hwparams; Loading Loading
drivers/usb/dwc3/core.c +13 −0 Original line number Diff line number Diff line Loading @@ -260,6 +260,17 @@ static void dwc3_event_buffers_cleanup(struct dwc3 *dwc) } } static void dwc3_core_num_eps(struct dwc3 *dwc) { struct dwc3_hwparams *parms = &dwc->hwparams; dwc->num_in_eps = DWC3_NUM_IN_EPS(parms); dwc->num_out_eps = DWC3_NUM_EPS(parms) - dwc->num_in_eps; dev_vdbg(dwc->dev, "found %d IN and %d OUT endpoints\n", dwc->num_in_eps, dwc->num_out_eps); } static void dwc3_cache_hwparams(struct dwc3 *dwc) { struct dwc3_hwparams *parms = &dwc->hwparams; Loading Loading @@ -336,6 +347,8 @@ static int dwc3_core_init(struct dwc3 *dwc) if (dwc->revision < DWC3_REVISION_190A) reg |= DWC3_GCTL_U2RSTECN; dwc3_core_num_eps(dwc); dwc3_writel(dwc->regs, DWC3_GCTL, reg); return 0; Loading
drivers/usb/dwc3/core.h +15 −0 Original line number Diff line number Diff line Loading @@ -575,6 +575,14 @@ struct dwc3_hwparams { /* HWPARAMS1 */ #define DWC3_NUM_INT(n) (((n) & (0x3f << 15)) >> 15) /* HWPARAMS3 */ #define DWC3_NUM_IN_EPS_MASK (0x1f << 18) #define DWC3_NUM_EPS_MASK (0x3f << 12) #define DWC3_NUM_EPS(p) (((p)->hwparams3 & \ (DWC3_NUM_EPS_MASK)) >> 12) #define DWC3_NUM_IN_EPS(p) (((p)->hwparams3 & \ (DWC3_NUM_IN_EPS_MASK)) >> 18) /* HWPARAMS7 */ #define DWC3_RAM1_DEPTH(n) ((n) & 0xffff) Loading Loading @@ -641,6 +649,8 @@ struct dwc3_scratchpad_array { * @u2pel: parameter from Set SEL request. * @u1sel: parameter from Set SEL request. * @u1pel: parameter from Set SEL request. * @num_out_eps: number of out endpoints * @num_in_eps: number of in endpoints * @ep0_next_event: hold the next expected event * @ep0state: state of endpoint zero * @link_state: link state Loading @@ -658,8 +668,10 @@ struct dwc3 { dma_addr_t ep0_trb_addr; dma_addr_t ep0_bounce_addr; struct dwc3_request ep0_usb_req; /* device lock */ spinlock_t lock; struct device *dev; struct platform_device *xhci; Loading Loading @@ -727,6 +739,9 @@ struct dwc3 { u8 speed; u8 num_out_eps; u8 num_in_eps; void *mem; struct dwc3_hwparams hwparams; Loading