aboutsummaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAge
* Merge tag 'xceiv-for-v3.6' of ↵Greg Kroah-Hartman2012-07-05
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | git://git.kernel.org/pub/scm/linux/kernel/git/balbi/usb into usb-next usb: phy: patches for v3.6 merge window We are starting to support multiple USB phys as we should thanks for Kishon's work. DeviceTree support for USB PHYs won't come until discussion with DeviceTree maintainer is finished. Together with that series, we have one fix for twl4030 which missed a IRQF_ONESHOT annotation when requesting a threaded IRQ without a top half handler, and removal of an unused variable compilation warning to isp1301_omap.
| * usb: phy: fix error handling in usb_get_phyKishon Vijay Abraham I2012-07-02
| | | | | | | | | | | | | | | | | | spin_unlock_irqrestore() was not being called in the error path of usb_get_phy. It's fixed here. Reported-by: Marc Kleine-Budde <mkl@pengutronix.de> Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com> Signed-off-by: Felipe Balbi <balbi@ti.com>
| * usb: phy: fix return value check of usb_get_phyKishon Vijay Abraham I2012-07-02
| | | | | | | | | | | | | | | | | | usb_get_phy will return -ENODEV if it's not able to find the phy. Hence fixed all the callers of usb_get_phy to check for this error condition instead of relying on a non-zero value as success condition. Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com> Signed-off-by: Felipe Balbi <balbi@ti.com>
| * usb: otg: twl: use devres API to allocate resourcesKishon Vijay Abraham I2012-06-25
| | | | | | | | | | | | | | | | used devres API while allocating memory resource in twl4030 and twl6030 so that these resources are released automatically on driver detach. Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com> Signed-off-by: Felipe Balbi <balbi@ti.com>
| * usb: musb: omap: use devres API to allocate resourcesKishon Vijay Abraham I2012-06-25
| | | | | | | | | | | | | | | | | | used devres API while allocating memory resource and while getting usb phy so that these resources are released automatically on driver detach. Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com> Signed-off-by: Felipe Balbi <balbi@ti.com>
| * usb: musb: move otg specific initializations from twl to glueKishon Vijay Abraham I2012-06-25
| | | | | | | | | | | | | | | | | | | | | | Moved otg specific state(OTG_STATE_B_IDLE, OTG_STATE_A_IDLE) initializations from twl to glue. These initializations are removed from twl4030 and twl6030 and moved to the mailbox API defined in glue. This is part of the cleanup in preparation to make use of usb2 phy driver. Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com> Signed-off-by: Felipe Balbi <balbi@ti.com>
| * usb: musb: twl: use mailbox API to send VBUS or ID eventsKishon Vijay Abraham I2012-06-25
| | | | | | | | | | | | | | | | The atomic notifier from twl4030/twl6030 to notifiy VBUS and ID events, is replaced by a direct call to omap musb blue. Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com> Signed-off-by: Felipe Balbi <balbi@ti.com>
| * usb: musb: move work_struct(otg_notifier_work) from core to omap glueKishon Vijay Abraham I2012-06-25
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Commit 712d8e(fixes pm_runtime calls while atomic by using a work queue. musb pm_runtime_get_sync call happens in interrupt context on cable attach case. That can result in re-enabling the interrupts and cause side affect. To avoid this deferred processing is used) While the issue and the work queue implementation is specific to omap (omap2430.c), the work_struct is defined as a member of struct musb (musb_core.h). Hence moved the work_struct from musb_core to omap glue. Cc: Vikram Pandita <vikram.pandita@ti.com> Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com> Signed-off-by: Felipe Balbi <balbi@ti.com>
| * usb: otg: utils: devres: Add API's to associate a device with the phyKishon Vijay Abraham I2012-06-25
| | | | | | | | | | | | | | | | | | Used devres API's to associate the phy with a device so that on driver detach, release function is invoked on the devres data(usb_phy) and devres data(usb_phy) is released. Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com> Signed-off-by: Felipe Balbi <balbi@ti.com>
| * usb: otg: support for multiple transceivers by a single controllerKishon Vijay Abraham I2012-06-25
| | | | | | | | | | | | | | | | | | | | | | Add a linked list for keeping multiple PHY instances with different types so that we can have separate USB2 and USB3 PHYs on one single board. _get_phy_ has been changed so that the controller gets the transceiver by type. _remove_phy_ has been added to let the phy be removed from the phy list. Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com> Signed-off-by: Felipe Balbi <balbi@ti.com>
| * usb: otg: utils: rename function name in OTG utilsKishon Vijay Abraham I2012-06-25
| | | | | | | | | | | | | | | | | | _transceiver() in otg.c is replaced with _phy. usb_set_transceiver is replaced with usb_add_phy to make it similar to other usb standard function names like usb_add_hcd. Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com> Signed-off-by: Felipe Balbi <balbi@ti.com>
| * usb: otg: twl: add missing IRQF_ONESHOTFelipe Balbi2012-06-14
| | | | | | | | | | | | | | | | | | this patch fixes the following warning: [ 2.825378] genirq: Threaded irq requested \ with handler=NULL and !ONESHOT for irq 363 Signed-off-by: Felipe Balbi <balbi@ti.com>
| * usb: otg: isp1301_omap: resolve unused variable warning from gccPaul Walmsley2012-06-04
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Resolve this build warning: drivers/usb/otg/isp1301_omap.c: In function 'isp1301_set_peripheral': drivers/usb/otg/isp1301_omap.c:1340:6: warning: unused variable 'l' This shows up when building with the 'omap1_defconfig' and '5912osk_testconfig' configs from git://git.pwsan.com/omap_kconfigs. Compile-tested only. Cc: Heikki Krogerus <heikki.krogerus@linux.intel.com> Cc: Felipe Balbi <balbi@ti.com> Signed-off-by: Paul Walmsley <paul@pwsan.com> Signed-off-by: Felipe Balbi <balbi@ti.com>
* | Merge tag 'dwc3-for-v3.6' of ↵Greg Kroah-Hartman2012-07-05
|\ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | git://git.kernel.org/pub/scm/linux/kernel/git/balbi/usb into usb-next usb: dwc3: patches for v3.6 merge window lots of changes for the dwc3 driver which will make the driver a lot more stable and some changes which are just cosmetic. The bulk of changes is related to mis-defined macros which were never used before, some fixes to error path which e.g. prevent the driver from initiating two transfer on ep0out in case of stall, some fixes to request dequeueing and the End Transfer Command. We have some changes to U1/U2 handling where we were enabling those transtions at the wrong spot (though we haven't seen a problem from that as of today). A few patches will make it easier to add support for newer releases of the core by adding definitions for new registers and changing the code to act accordingly when certain revisions are detected. There's also the usual comestic changes to make the driver easier to maintain and make it easier for new- comers to understand the driver. Also one patch fixing a double inclusion of a header.
| * | usb: dwc3: return error in case of run/stop timeoutPratyush Anand2012-07-02
| | | | | | | | | | | | | | | | | | | | | | | | Although timeout has never been experienced, still to make it meaningful, its better to return error if it ever occurs. Signed-off-by: Pratyush Anand <pratyush.anand@st.com> Signed-off-by: Felipe Balbi <balbi@ti.com>
| * | usb: dwc3: enable ACCEPT{U1,U2}ENA when SetConfiguration receivedPratyush Anand2012-07-02
| | | | | | | | | | | | | | | | | | | | | | | | As per databook, ACCEPT{U1,U2}ENA bits should be set after receiving SetConfiguration Command. Signed-off-by: Pratyush Anand <pratyush.anand@st.com> Signed-off-by: Felipe Balbi <balbi@ti.com>
| * | usb: dwc3: no need to clear INIT{U1,U2}ENA bitsPratyush Anand2012-07-02
| | | | | | | | | | | | | | | | | | | | | | | | as per databook, these bits are cleared by hardware on each USB reset, so no need to clear it explicitly by software in reset ISR. Signed-off-by: Pratyush Anand <pratyush.anand@st.com> Signed-off-by: Felipe Balbi <balbi@ti.com>
| * | usb: dwc3: keep default hird threshold value as 4b1100Pratyush Anand2012-07-02
| | | | | | | | | | | | | | | | | | | | | | | | as per data book any HIRD threshold value greater than 4b1100 is invalid. So set the maximum valid value as default values. Signed-off-by: Pratyush Anand <pratyush.anand@st.com> Signed-off-by: Felipe Balbi <balbi@ti.com>
| * | usb: dwc3: correct set_halt implementation for ep0Pratyush Anand2012-07-02
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | set_halt for ep0 is called to stall a deferred control responses by the gadget. We already have a function to stall default control endpoint. This patch points set_halt for ep0 to the already available function. Signed-off-by: Pratyush Anand <pratyush.anand@st.com> Signed-off-by: Michel Sanches <michel.sanches@st.com> Signed-off-by: Felipe Balbi <balbi@ti.com>
| * | usb: dwc3: ep0: prevent starting transfers twice on ep0Felipe Balbi2012-06-25
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In case we try to start an invalid test mode, we will call dwc3_ep0_stall_and_restart() but we will also call dwc3_ep0_out_start() which will start a second transfer on ep0. Let's prevent any problems by returning early in the error case. Signed-off-by: Felipe Balbi <balbi@ti.com>
| * | usb: dwc3: gadget: remove duplicated code from __dwc3_gadget_ep_set_haltFelipe Balbi2012-06-25
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | whenever we want to stall ep0, we always call dwc3_ep0_stall_and_restart() which makes sure to send ep0state properly rendering the code in __dwc3_gadget_ep_set_halt() duplicated. Reported-by: Pratyush Anand <pratyush.anand@st.com> Signed-off-by: Felipe Balbi <balbi@ti.com>
| * | usb: dwc3: rename res_trans_idx to resource_indexFelipe Balbi2012-06-25
| | | | | | | | | | | | | | | | | | | | | resource_index is more human readable. No functional changes. Signed-off-by: Felipe Balbi <balbi@ti.com>
| * | usb: dwc3: gadget: split special cases of ep_queue()Felipe Balbi2012-06-25
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | It makes it easier to read and also avoids setting DWC3_EP_PENDING_REQUEST just so the next branch evaluates true. No functional changes otherwise. Cc: Pratyush Anand <pratyush.anand@st.com> Cc: Paul Zimmerman <paulz@synopsys.com> Signed-off-by: Felipe Balbi <balbi@ti.com>
| * | usb: dwc3: remove WARN_ON from dwc_stop_active_transferPratyush Anand2012-06-25
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Now we are sure that, if res_trans_idx is zero, then endpoint has been stopped. So it's safe to just return if endpoint is already stopped. No need to generate warning anymore. While doing so, it's better to return when res_trans_idx is zero and decrease one level of indentation. Signed-off-by: Pratyush Anand <pratyush.anand@st.com> [ balbi@ti.com: slightly changed commit log ] Signed-off-by: Felipe Balbi <balbi@ti.com>
| * | USB: DWC3: Issue device soft reset before core soft resetPratyush Anand2012-06-22
| | | | | | | | | | | | | | | | | | | | | | | | | | | Synopsys specification clearly states under section "Device Power-On or Soft Reset" that DCTL.CSftRst=1 should be first step. So, just follow what specification says. Signed-off-by: Pratyush Anand <pratyush.anand@st.com> Signed-off-by: Felipe Balbi <balbi@ti.com>
| * | USB: DWC3: Put 100 ms delay for phy to be stablePratyush Anand2012-06-22
| | | | | | | | | | | | | | | | | | | | | | | | Before taking core out of reset phy must be stable. So wait for 100ms after clear phy reset. Signed-off-by: Pratyush Anand <pratyush.anand@st.com> Signed-off-by: Felipe Balbi <balbi@ti.com>
| * | usb: dwc3: Remove duplicate header file inclusionSachin Kamat2012-06-22
| | | | | | | | | | | | | | | | | | | | | module.h header file was included twice. Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org> Signed-off-by: Felipe Balbi <balbi@ti.com>
| * | usb: dwc3: giveback all queued request when ep disabled or reset receivedPratyush Anand2012-06-15
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In case of ep_disable and reset interrupt is received and, still there was at least one request queued for dma transfer, then endpoint is stopped first. Once endpoint is stopped, callback for all queued request must be called. Signed-off-by: Pratyush Anand <pratyush.anand@st.com> Signed-off-by: Felipe Balbi <balbi@ti.com>
| * | usb: dwc3: resume phy during gadget initialization on recent coresPratyush Anand2012-06-06
| | | | | | | | | | | | | | | | | | | | | It is needed to enumerate recent cores like 2.10a. Signed-off-by: Pratyush Anand <pratyush.anand@st.com> Signed-off-by: Felipe Balbi <balbi@ti.com>
| * | usb: dwc3: Correct DWC3_DCTL_HIRD_THRES definitionPratyush Anand2012-06-06
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The definition of DWC3_DCTL_HIRD_THRES macro is completely wrong. It will only work for when we want to read the register's contents for that bitfield. Change the macro so that it can be used to writing to the register, and when we need to read, we can add extra right shift of 24 bits. Signed-off-by: Pratyush Anand <pratyush.anand@st.com> [ balbi@ti.com: add a commit log ] Signed-off-by: Felipe Balbi <balbi@ti.com>
| * | usb: dwc3: gadget: ignore endpoint IRQs when endpoint is disabledFelipe Balbi2012-06-06
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | By the time we're disabling the endpoint, HW could already have posted more events to our event buffer. In that case, we will receive endpoint events for a disabled endpoint. In order to protect ourselves from that situation, we simply ignore endpoint interrupts whenever the endpoint is disabled. Tested-by: Pratyush Anand <pratyush.anand@st.com> Signed-off-by: Felipe Balbi <balbi@ti.com>
| * | usb: dwc3: gadget: don't call stop_active_transfers() on disconnectFelipe Balbi2012-06-06
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In case we get disconnected, we will call gadget driver's disconnect method, which should make sure to disable all endpoints. At that point we will call stop_active_transfers() to make sure we didn't leave any pending request on the controller. Tested-by: Pratyush Anand <pratyush.anand@st.com> Signed-off-by: Felipe Balbi <balbi@ti.com>
| * | usb: dwc3: gadget: don't wait for ep cmd IRQFelipe Balbi2012-06-06
| | | | | | | | | | | | | | | | | | | | | | | | | | | That IRQ is causing way too much trouble. We have a different handling which was agreed with IP provider and has been tested with FPGA and OMAP5. Tested-by: Pratyush Anand <pratyush.anand@st.com> Signed-off-by: Felipe Balbi <balbi@ti.com>
| * | usb: dwc3: gadget: drop useless codeFelipe Balbi2012-06-06
| | | | | | | | | | | | | | | | | | | | | | | | We never set CMDIOC bit for Start Transfer command, so that code will never be used. Tested-by: Pratyush Anand <pratyush.anand@st.com> Signed-off-by: Felipe Balbi <balbi@ti.com>
| * | usb: dwc3: Fix break from cleanup request loopPratyush Anand2012-06-04
| | | | | | | | | | | | | | | | | | | | | | | | | | | If event status says that its last completed TRB but TRB is still owned by HW then break from the loop, because we are not going to get correct TRB status from trb control/size register. Signed-off-by: Pratyush Anand <pratyush.anand@st.com> Signed-off-by: Felipe Balbi <balbi@ti.com>
| * | usb: dwc3: Fix missed isoc IN transactionPratyush Anand2012-06-04
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | If an IN transfer is missed on isoc endpoint, then driver must insure that next ep_queue is properly handled. This patch fixes this issue by starting a new transfer for next queued request. Signed-off-by: Pratyush Anand <pratyush.anand@st.com> Signed-off-by: Felipe Balbi <balbi@ti.com>
| * | USB: DWC3: Correct DWC3_DSTS_SOFFN_MASK definitionPratyush Anand2012-06-04
| | | | | | | | | | | | | | | | | | | | | SOF Number is bit16:3 of DSTS. Correct the mask accordingly. Signed-off-by: Pratyush Anand <pratyush.anand@st.com> Signed-off-by: Felipe Balbi <balbi@ti.com>
| * | USB: DWC3: Correct DWC3_TRB_SIZE_TRBSTS definitionPratyush Anand2012-06-04
| | | | | | | | | | | | | | | | | | | | | Correct define for DWC3_TRB_SIZE_TRBSTS. Signed-off-by: Pratyush Anand <pratyush.anand@st.com> Signed-off-by: Felipe Balbi <balbi@ti.com>
| * | USB: DWC3: Generate interrupt on each TRB as default optionPratyush Anand2012-06-04
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Currently in case of isoc, interrupt is programmed after each TRB_NUM/4 ie 8th TRB. A TRB is programmed against each submitted request from gadget. If we do not want to limit the minimum number of necessary request to be submitted from gadget then we must receive interrupt on each TRB submission. There can be such situation with a gadget working with ping-pong buffer. If a gadget does not want to receive interrupt after each request completion then it may set no_interrupt flag. Signed-off-by: Pratyush Anand <pratyush.anand@st.com> Signed-off-by: Felipe Balbi <balbi@ti.com>
| * | usb: dwc3: ep0: rename dwc3_ep0_complete_req to dwc3_ep0_complete_statusFelipe Balbi2012-06-03
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | That's a much more intuitive name as that function is only called at the completion of a Status Phase. It also matches dwc3_ep0_complete_data() for the completion of Data Phase. Signed-off-by: Felipe Balbi <balbi@ti.com>
| * | usb: dwc3: ep0: be careful with endianness on SetSEL commandFelipe Balbi2012-06-03
| | | | | | | | | | | | | | | | | | | | | | | | USB is always little endian, but this driver could run on non little endian cpus. Let's be carefull with that. Signed-off-by: Felipe Balbi <balbi@ti.com>
| * | usb: dwc3: ep0: simplify error handling on dwc3_ep0_inspect_setupFelipe Balbi2012-06-03
| | | | | | | | | | | | | | | | | | | | | | | | There's no need for returning early. Instead, we can call dwc3_ep0_stall_and_restart() conditionally. Signed-off-by: Felipe Balbi <balbi@ti.com>
| * | usb: dwc3: gadget: move AcceptU1Ena and AcceptU2Ena to Reset IRQGerard CAUVY2012-06-03
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | According to the databook, the DWC3 Core will reset those bits to 0 on USB Bus Reset. This means we must re-enable those bits on every reset interrupt. Because we will always get a Reset interrupt after loading a gadget driver, we can, instead of re-enabling something that was just lost, move the handling of those bits to the Reset Interrupt. This patch fixes USB30CV U1/U2 Test. Signed-off-by: Gerard CAUVY <g-cauvy1@ti.com> Signed-off-by: Felipe Balbi <balbi@ti.com>
| * | usb: dwc3: gadget: disable U1/U2 on disconnectFelipe Balbi2012-06-03
| | | | | | | | | | | | | | | | | | | | | | | | If we get a disconnect IRQ, we should take the core out of low power mode so we can reconnect afterwards. Signed-off-by: Felipe Balbi <balbi@ti.com>
| * | usb: dwc3: gadget: prevent DCTL register corruptionFelipe Balbi2012-06-03
| | | | | | | | | | | | | | | | | | | | | | | | | | | If we don't read out the contents of the register (in order to reinitialize 'reg' variable) we will be writing unknown contents to the DCTL register whenever we try to use dwc3_gadget_wakeup() function. Signed-off-by: Felipe Balbi <balbi@ti.com>
| * | usb: dwc3: core: make sure evt->lpos is correctly initializedPaul Zimmerman2012-06-03
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The same event buffers will be reused when coming out of hibernation, so we must reinitialize them properly to avoid any mistakes. While at that, also take dwc3_event_buffers_setup() out of __devinit section. Signed-off-by: Felipe Balbi <balbi@ti.com>
| * | usb: dwc3: support new revisions of DWC3 corePaul Zimmerman2012-06-03
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Recent cores (>= 1.94a) have a set of new features, commands and a slightly different programming model. This patch aims to support those changes. Signed-off-by: Paul Zimmerman <paulz@synopsys.com> Signed-off-by: Felipe Balbi <balbi@ti.com>
| * | usb: dwc3: gadget: rename phy_power() to phy_suspend()Paul Zimmerman2012-06-03
| | | | | | | | | | | | | | | | | | | | | | | | | | | those two functions don't power PHYs, they simply put them in suspend state. Rename to reflect better what functions actually do. Signed-off-by: Paul Zimmerman <paulz@synopsys.com> Signed-off-by: Felipe Balbi <balbi@ti.com>
| * | usb: dwc3: gadget: reinitialize retriesPaul Zimmerman2012-06-03
| | | | | | | | | | | | | | | | | | | | | retries is used twice without being reinitialized. Signed-off-by: Paul Zimmerman <paulz@synopsys.com> Signed-off-by: Felipe Balbi <balbi@ti.com>
| * | usb: dwc3: add definitions for new registersPaul Zimmerman2012-06-03
| | | | | | | | | | | | | | | | | | | | | | | | This patch adds definitions for some new registers that have been added to later versions of the controller, up to v2.10a. Signed-off-by: Paul Zimmerman <paulz@synopsys.com> Signed-off-by: Felipe Balbi <balbi@ti.com>