Loading drivers/usb/gadget/ci13xxx_msm.c +3 −4 Original line number Original line Diff line number Diff line Loading @@ -125,9 +125,9 @@ static void ci13xxx_msm_connect(void) ULPI_MISC_A_VBUSVLDEXTSEL, ULPI_MISC_A_VBUSVLDEXTSEL, ULPI_SET(ULPI_MISC_A)); ULPI_SET(ULPI_MISC_A)); temp = readl_relaxed(USB_GENCONFIG2); temp = readl_relaxed(USB_GENCONFIG_2); temp |= GENCFG2_SESS_VLD_CTRL_EN; temp |= GENCONFIG_2_SESS_VLD_CTRL_EN; writel_relaxed(temp, USB_GENCONFIG2); writel_relaxed(temp, USB_GENCONFIG_2); temp = readl_relaxed(USB_USBCMD); temp = readl_relaxed(USB_USBCMD); temp |= USBCMD_SESS_VLD_CTRL; temp |= USBCMD_SESS_VLD_CTRL; Loading Loading @@ -229,7 +229,6 @@ static void ci13xxx_msm_notify_event(struct ci13xxx *udc, unsigned int event) case CI13XXX_CONTROLLER_UDC_STARTED_EVENT: case CI13XXX_CONTROLLER_UDC_STARTED_EVENT: dev_info(dev, dev_info(dev, "CI13XXX_CONTROLLER_UDC_STARTED_EVENT received\n"); "CI13XXX_CONTROLLER_UDC_STARTED_EVENT received\n"); udc->gadget.interrupt_num = _udc_ctxt.irq; break; break; default: default: dev_dbg(dev, "unknown ci13xxx_udc event\n"); dev_dbg(dev, "unknown ci13xxx_udc event\n"); Loading drivers/usb/gadget/ci13xxx_udc.c +2 −16 Original line number Original line Diff line number Diff line Loading @@ -2357,7 +2357,6 @@ static int _gadget_stop_activity(struct usb_gadget *gadget) udc->configured = 0; udc->configured = 0; spin_unlock_irqrestore(udc->lock, flags); spin_unlock_irqrestore(udc->lock, flags); gadget->xfer_isr_count = 0; udc->driver->disconnect(gadget); udc->driver->disconnect(gadget); spin_lock_irqsave(udc->lock, flags); spin_lock_irqsave(udc->lock, flags); Loading Loading @@ -3552,8 +3551,7 @@ static int ci13xxx_pullup(struct usb_gadget *_gadget, int is_active) static int ci13xxx_start(struct usb_gadget *gadget, static int ci13xxx_start(struct usb_gadget *gadget, struct usb_gadget_driver *driver); struct usb_gadget_driver *driver); static int ci13xxx_stop(struct usb_gadget *gadget, static int ci13xxx_stop(struct usb_gadget *gadget); struct usb_gadget_driver *driver); /** /** * Device operations part of the API to the USB controller hardware, * Device operations part of the API to the USB controller hardware, Loading Loading @@ -3665,21 +3663,11 @@ static int ci13xxx_start(struct usb_gadget *gadget, * * * Check usb_gadget_unregister_driver() at "usb_gadget.h" for details * Check usb_gadget_unregister_driver() at "usb_gadget.h" for details */ */ static int ci13xxx_stop(struct usb_gadget *gadget, static int ci13xxx_stop(struct usb_gadget *gadget) struct usb_gadget_driver *driver) { { struct ci13xxx *udc = _udc; struct ci13xxx *udc = _udc; unsigned long flags; unsigned long flags; trace("%pK", driver); if (driver == NULL || driver->unbind == NULL || driver->setup == NULL || driver->disconnect == NULL || driver != udc->driver) return -EINVAL; spin_lock_irqsave(udc->lock, flags); spin_lock_irqsave(udc->lock, flags); if (!(udc->udc_driver->flags & CI13XXX_PULLUP_ON_VBUS) || if (!(udc->udc_driver->flags & CI13XXX_PULLUP_ON_VBUS) || Loading Loading @@ -3756,7 +3744,6 @@ static irqreturn_t udc_irq(void) isr_statistics.uei++; isr_statistics.uei++; if (USBi_UI & intr) { if (USBi_UI & intr) { isr_statistics.ui++; isr_statistics.ui++; udc->gadget.xfer_isr_count++; isr_tr_complete_handler(udc); isr_tr_complete_handler(udc); } } if (USBi_SLI & intr) { if (USBi_SLI & intr) { Loading Loading @@ -3894,7 +3881,6 @@ static int udc_probe(struct ci13xxx_udc_driver *driver, struct device *dev, pdata = dev->platform_data; pdata = dev->platform_data; if (pdata) { if (pdata) { udc->gadget.usb_core_id = pdata->usb_core_id; if (pdata->enable_axi_prefetch) if (pdata->enable_axi_prefetch) udc->gadget.extra_buf_alloc = EXTRA_ALLOCATION_SIZE; udc->gadget.extra_buf_alloc = EXTRA_ALLOCATION_SIZE; } } Loading include/linux/usb/gadget.h +6 −0 Original line number Original line Diff line number Diff line Loading @@ -468,6 +468,9 @@ struct usb_gadget_ops { * @deactivated: True if gadget is deactivated - in deactivated state it cannot * @deactivated: True if gadget is deactivated - in deactivated state it cannot * be connected. * be connected. * @connected: True if gadget is connected. * @connected: True if gadget is connected. * @bam2bam_func_enabled; Indicates function using bam2bam is enabled or not. * @extra_buf_alloc: Extra allocation size for AXI prefetch so that out of * boundary access is protected. * * * Gadgets have a mostly-portable "gadget driver" implementing device * Gadgets have a mostly-portable "gadget driver" implementing device * functions, handling all usb configurations and interfaces. Gadget * functions, handling all usb configurations and interfaces. Gadget Loading Loading @@ -521,6 +524,9 @@ struct usb_gadget { unsigned deactivated:1; unsigned deactivated:1; unsigned connected:1; unsigned connected:1; bool remote_wakeup; bool remote_wakeup; bool bam2bam_func_enabled; u32 extra_buf_alloc; bool l1_supported; }; }; #define work_to_gadget(w) (container_of((w), struct usb_gadget, work)) #define work_to_gadget(w) (container_of((w), struct usb_gadget, work)) Loading include/linux/usb/msm_hsusb_hw.h +14 −0 Original line number Original line Diff line number Diff line Loading @@ -21,6 +21,7 @@ #define USB_AHBBURST (MSM_USB_BASE + 0x0090) #define USB_AHBBURST (MSM_USB_BASE + 0x0090) #define USB_AHBMODE (MSM_USB_BASE + 0x0098) #define USB_AHBMODE (MSM_USB_BASE + 0x0098) #define USB_GENCONFIG (MSM_USB_BASE + 0x009C) #define USB_GENCONFIG_2 (MSM_USB_BASE + 0x00a0) #define USB_GENCONFIG_2 (MSM_USB_BASE + 0x00a0) #define ULPI_TX_PKT_EN_CLR_FIX BIT(19) #define ULPI_TX_PKT_EN_CLR_FIX BIT(19) Loading @@ -39,6 +40,15 @@ #define USBCMD_RESET 2 #define USBCMD_RESET 2 #define USB_USBINTR (MSM_USB_BASE + 0x0148) #define USB_USBINTR (MSM_USB_BASE + 0x0148) #define USB_L1_EP_CTRL (MSM_USB_BASE + 0x0250) #define USB_L1_CONFIG (MSM_USB_BASE + 0x0254) #define L1_CONFIG_LPM_EN BIT(4) #define L1_CONFIG_REMOTE_WAKEUP BIT(5) #define L1_CONFIG_GATE_SYS_CLK BIT(7) #define L1_CONFIG_PHY_LPM BIT(10) #define L1_CONFIG_PLL BIT(11) #define PORTSC_PHCD (1 << 23) /* phy suspend mode */ #define PORTSC_PHCD (1 << 23) /* phy suspend mode */ #define PORTSC_PTS_MASK (3 << 30) #define PORTSC_PTS_MASK (3 << 30) #define PORTSC_PTS_ULPI (2 << 30) #define PORTSC_PTS_ULPI (2 << 30) Loading @@ -52,6 +62,10 @@ #define ULPI_DATA(n) ((n) & 255) #define ULPI_DATA(n) ((n) & 255) #define ULPI_DATA_READ(n) (((n) >> 8) & 255) #define ULPI_DATA_READ(n) (((n) >> 8) & 255) #define GENCONFIG_BAM_DISABLE (1 << 13) #define GENCONFIG_TXFIFO_IDLE_FORCE_DISABLE (1 << 4) #define GENCONFIG_ULPI_SERIAL_EN (1 << 5) /* synopsys 28nm phy registers */ /* synopsys 28nm phy registers */ #define ULPI_PWR_CLK_MNG_REG 0x88 #define ULPI_PWR_CLK_MNG_REG 0x88 #define OTG_COMP_DISABLE BIT(0) #define OTG_COMP_DISABLE BIT(0) Loading Loading
drivers/usb/gadget/ci13xxx_msm.c +3 −4 Original line number Original line Diff line number Diff line Loading @@ -125,9 +125,9 @@ static void ci13xxx_msm_connect(void) ULPI_MISC_A_VBUSVLDEXTSEL, ULPI_MISC_A_VBUSVLDEXTSEL, ULPI_SET(ULPI_MISC_A)); ULPI_SET(ULPI_MISC_A)); temp = readl_relaxed(USB_GENCONFIG2); temp = readl_relaxed(USB_GENCONFIG_2); temp |= GENCFG2_SESS_VLD_CTRL_EN; temp |= GENCONFIG_2_SESS_VLD_CTRL_EN; writel_relaxed(temp, USB_GENCONFIG2); writel_relaxed(temp, USB_GENCONFIG_2); temp = readl_relaxed(USB_USBCMD); temp = readl_relaxed(USB_USBCMD); temp |= USBCMD_SESS_VLD_CTRL; temp |= USBCMD_SESS_VLD_CTRL; Loading Loading @@ -229,7 +229,6 @@ static void ci13xxx_msm_notify_event(struct ci13xxx *udc, unsigned int event) case CI13XXX_CONTROLLER_UDC_STARTED_EVENT: case CI13XXX_CONTROLLER_UDC_STARTED_EVENT: dev_info(dev, dev_info(dev, "CI13XXX_CONTROLLER_UDC_STARTED_EVENT received\n"); "CI13XXX_CONTROLLER_UDC_STARTED_EVENT received\n"); udc->gadget.interrupt_num = _udc_ctxt.irq; break; break; default: default: dev_dbg(dev, "unknown ci13xxx_udc event\n"); dev_dbg(dev, "unknown ci13xxx_udc event\n"); Loading
drivers/usb/gadget/ci13xxx_udc.c +2 −16 Original line number Original line Diff line number Diff line Loading @@ -2357,7 +2357,6 @@ static int _gadget_stop_activity(struct usb_gadget *gadget) udc->configured = 0; udc->configured = 0; spin_unlock_irqrestore(udc->lock, flags); spin_unlock_irqrestore(udc->lock, flags); gadget->xfer_isr_count = 0; udc->driver->disconnect(gadget); udc->driver->disconnect(gadget); spin_lock_irqsave(udc->lock, flags); spin_lock_irqsave(udc->lock, flags); Loading Loading @@ -3552,8 +3551,7 @@ static int ci13xxx_pullup(struct usb_gadget *_gadget, int is_active) static int ci13xxx_start(struct usb_gadget *gadget, static int ci13xxx_start(struct usb_gadget *gadget, struct usb_gadget_driver *driver); struct usb_gadget_driver *driver); static int ci13xxx_stop(struct usb_gadget *gadget, static int ci13xxx_stop(struct usb_gadget *gadget); struct usb_gadget_driver *driver); /** /** * Device operations part of the API to the USB controller hardware, * Device operations part of the API to the USB controller hardware, Loading Loading @@ -3665,21 +3663,11 @@ static int ci13xxx_start(struct usb_gadget *gadget, * * * Check usb_gadget_unregister_driver() at "usb_gadget.h" for details * Check usb_gadget_unregister_driver() at "usb_gadget.h" for details */ */ static int ci13xxx_stop(struct usb_gadget *gadget, static int ci13xxx_stop(struct usb_gadget *gadget) struct usb_gadget_driver *driver) { { struct ci13xxx *udc = _udc; struct ci13xxx *udc = _udc; unsigned long flags; unsigned long flags; trace("%pK", driver); if (driver == NULL || driver->unbind == NULL || driver->setup == NULL || driver->disconnect == NULL || driver != udc->driver) return -EINVAL; spin_lock_irqsave(udc->lock, flags); spin_lock_irqsave(udc->lock, flags); if (!(udc->udc_driver->flags & CI13XXX_PULLUP_ON_VBUS) || if (!(udc->udc_driver->flags & CI13XXX_PULLUP_ON_VBUS) || Loading Loading @@ -3756,7 +3744,6 @@ static irqreturn_t udc_irq(void) isr_statistics.uei++; isr_statistics.uei++; if (USBi_UI & intr) { if (USBi_UI & intr) { isr_statistics.ui++; isr_statistics.ui++; udc->gadget.xfer_isr_count++; isr_tr_complete_handler(udc); isr_tr_complete_handler(udc); } } if (USBi_SLI & intr) { if (USBi_SLI & intr) { Loading Loading @@ -3894,7 +3881,6 @@ static int udc_probe(struct ci13xxx_udc_driver *driver, struct device *dev, pdata = dev->platform_data; pdata = dev->platform_data; if (pdata) { if (pdata) { udc->gadget.usb_core_id = pdata->usb_core_id; if (pdata->enable_axi_prefetch) if (pdata->enable_axi_prefetch) udc->gadget.extra_buf_alloc = EXTRA_ALLOCATION_SIZE; udc->gadget.extra_buf_alloc = EXTRA_ALLOCATION_SIZE; } } Loading
include/linux/usb/gadget.h +6 −0 Original line number Original line Diff line number Diff line Loading @@ -468,6 +468,9 @@ struct usb_gadget_ops { * @deactivated: True if gadget is deactivated - in deactivated state it cannot * @deactivated: True if gadget is deactivated - in deactivated state it cannot * be connected. * be connected. * @connected: True if gadget is connected. * @connected: True if gadget is connected. * @bam2bam_func_enabled; Indicates function using bam2bam is enabled or not. * @extra_buf_alloc: Extra allocation size for AXI prefetch so that out of * boundary access is protected. * * * Gadgets have a mostly-portable "gadget driver" implementing device * Gadgets have a mostly-portable "gadget driver" implementing device * functions, handling all usb configurations and interfaces. Gadget * functions, handling all usb configurations and interfaces. Gadget Loading Loading @@ -521,6 +524,9 @@ struct usb_gadget { unsigned deactivated:1; unsigned deactivated:1; unsigned connected:1; unsigned connected:1; bool remote_wakeup; bool remote_wakeup; bool bam2bam_func_enabled; u32 extra_buf_alloc; bool l1_supported; }; }; #define work_to_gadget(w) (container_of((w), struct usb_gadget, work)) #define work_to_gadget(w) (container_of((w), struct usb_gadget, work)) Loading
include/linux/usb/msm_hsusb_hw.h +14 −0 Original line number Original line Diff line number Diff line Loading @@ -21,6 +21,7 @@ #define USB_AHBBURST (MSM_USB_BASE + 0x0090) #define USB_AHBBURST (MSM_USB_BASE + 0x0090) #define USB_AHBMODE (MSM_USB_BASE + 0x0098) #define USB_AHBMODE (MSM_USB_BASE + 0x0098) #define USB_GENCONFIG (MSM_USB_BASE + 0x009C) #define USB_GENCONFIG_2 (MSM_USB_BASE + 0x00a0) #define USB_GENCONFIG_2 (MSM_USB_BASE + 0x00a0) #define ULPI_TX_PKT_EN_CLR_FIX BIT(19) #define ULPI_TX_PKT_EN_CLR_FIX BIT(19) Loading @@ -39,6 +40,15 @@ #define USBCMD_RESET 2 #define USBCMD_RESET 2 #define USB_USBINTR (MSM_USB_BASE + 0x0148) #define USB_USBINTR (MSM_USB_BASE + 0x0148) #define USB_L1_EP_CTRL (MSM_USB_BASE + 0x0250) #define USB_L1_CONFIG (MSM_USB_BASE + 0x0254) #define L1_CONFIG_LPM_EN BIT(4) #define L1_CONFIG_REMOTE_WAKEUP BIT(5) #define L1_CONFIG_GATE_SYS_CLK BIT(7) #define L1_CONFIG_PHY_LPM BIT(10) #define L1_CONFIG_PLL BIT(11) #define PORTSC_PHCD (1 << 23) /* phy suspend mode */ #define PORTSC_PHCD (1 << 23) /* phy suspend mode */ #define PORTSC_PTS_MASK (3 << 30) #define PORTSC_PTS_MASK (3 << 30) #define PORTSC_PTS_ULPI (2 << 30) #define PORTSC_PTS_ULPI (2 << 30) Loading @@ -52,6 +62,10 @@ #define ULPI_DATA(n) ((n) & 255) #define ULPI_DATA(n) ((n) & 255) #define ULPI_DATA_READ(n) (((n) >> 8) & 255) #define ULPI_DATA_READ(n) (((n) >> 8) & 255) #define GENCONFIG_BAM_DISABLE (1 << 13) #define GENCONFIG_TXFIFO_IDLE_FORCE_DISABLE (1 << 4) #define GENCONFIG_ULPI_SERIAL_EN (1 << 5) /* synopsys 28nm phy registers */ /* synopsys 28nm phy registers */ #define ULPI_PWR_CLK_MNG_REG 0x88 #define ULPI_PWR_CLK_MNG_REG 0x88 #define OTG_COMP_DISABLE BIT(0) #define OTG_COMP_DISABLE BIT(0) Loading