- 02 10月, 2018 2 次提交
-
-
由 Grigor Tovmasyan 提交于
Added core parameter for service interval based scheduling. Acked-by: NMinas Harutyunyan <hminas@synopsys.com> Signed-off-by: NGrigor Tovmasyan <tovmasya@synopsys.com> Signed-off-by: NFelipe Balbi <felipe.balbi@linux.intel.com>
-
由 Minas Harutyunyan 提交于
Disabling all EP's allow to reset EP's to initial state. On disconnect disable all EP's instead of just killing all requests. Because of some platform didn't catch disconnect event, same stuff added to dwc2_hsotg_core_init_disconnected() function when USB reset detected on the bus. Changed from version 1: Changed lock acquire flow in dwc2_hsotg_ep_disable() function. Signed-off-by: NMinas Harutyunyan <hminas@synopsys.com> Signed-off-by: NFelipe Balbi <felipe.balbi@linux.intel.com>
-
- 30 7月, 2018 3 次提交
-
-
由 Minas Harutyunyan 提交于
To start ISOC transfers in handlers dwc2_gadget_handle_nak() and dwc2_gadget_handle_out_token_ep_disabled() driver reads current frame number, based on which, set target frame number to start first ISOC transfer. In case if system's high IRQ latency and multiple EP's asserted interrupt in same frame, there are high probability that when reading current frame number in EP's handlers, actual frame number can be increased. As result for bInterval > 1, starting target frame will be set wrongly and all ISOC packets will be dropped. In patch "usb: dwc2: Change reading of current frame number flow" reading of current frame number done ASAP in common interrupt handler. This frame number stored in frame_number variable which used as starting frame number for ISOC EP's in above mentioned handlers. Signed-off-by: NMinas Harutyunyan <hminas@synopsys.com> Signed-off-by: NFelipe Balbi <felipe.balbi@linux.intel.com>
-
由 Gevorg Sahakyan 提交于
dwc2_readl_rep/dwc2_writel_rep functions using readl/writel in a loop. Signed-off-by: NGevorg Sahakyan <sahakyan@synopsys.com> Signed-off-by: NFelipe Balbi <felipe.balbi@linux.intel.com>
-
由 Gevorg Sahakyan 提交于
Added hsotg argument to dwc2_readl/writel function prototype, and also instead of address pass offset of register. hsotg will contain flag field for endianness. Also customized dwc2_set_bit and dwc2_clear_bit function for dwc2_readl/writel functions. Signed-off-by: NGevorg Sahakyan <sahakyan@synopsys.com> Signed-off-by: NFelipe Balbi <felipe.balbi@linux.intel.com>
-
- 17 7月, 2018 1 次提交
-
-
由 John Keeping 提交于
For unidirectional endpoints, the endpoint pointer will be NULL for the unused direction. Check that the endpoint is active before dereferencing this pointer. Fixes: 1b4977c7 ("usb: dwc2: Update dwc2_handle_incomplete_isoc_in() function") Fixes: 689efb26 ("usb: dwc2: Update dwc2_handle_incomplete_isoc_out() function") Fixes: d8484552 ("usb: dwc2: Update GINTSTS_GOUTNAKEFF interrupt handling") Signed-off-by: NJohn Keeping <john@metanate.com> Signed-off-by: NFelipe Balbi <felipe.balbi@linux.intel.com>
-
- 19 6月, 2018 2 次提交
-
-
由 Minas Harutyunyan 提交于
PID bitfield in descriptor should be set based on particular request length, not based on EP's mc value. PID value can't be set to 0 even request length is 0. Signed-off-by: NMinas Harutyunyan <hminas@synopsys.com> Signed-off-by: NFelipe Balbi <felipe.balbi@linux.intel.com>
-
由 Grigor Tovmasyan 提交于
Freed allocated request for ep0 to prevent memory leak in case when dwc2_driver_probe() failed. Cc: Stefan Wahren <stefan.wahren@i2se.com> Cc: Marek Szyprowski <m.szyprowski@samsung.com> Tested-by: NStefan Wahren <stefan.wahren@i2se.com> Tested-by: NMarek Szyprowski <m.szyprowski@samsung.com> Acked-by: NMinas Harutyunyan <hminas@synopsys.com> Signed-off-by: NGrigor Tovmasyan <tovmasya@synopsys.com> Signed-off-by: NFelipe Balbi <felipe.balbi@linux.intel.com>
-
- 18 6月, 2018 3 次提交
-
-
由 Minas Harutyunyan 提交于
In ISOC OUT transfer, when the OUT token received while EP disabled, we shouldn't complete a usb request. The current flow completed one usb request, this will lead to a packet drop to function driver. Signed-off-by: NMinas Harutyunyan <hminas@synopsys.com> Signed-off-by: NFelipe Balbi <felipe.balbi@linux.intel.com>
-
由 Zeng Tao 提交于
In ISOC transfer, when the NAK interrupt happens, we shouldn't complete a usb request, the current flow will complete one usb request with no hardware transfer, this will lead to a packet drop on the usb bus. Acked-by: NMinas Harutyunyan <hminas@synopsys.com> Signed-off-by: NZeng Tao <prime.zeng@hisilicon.com> Signed-off-by: NFelipe Balbi <felipe.balbi@linux.intel.com>
-
由 Minas Harutyunyan 提交于
In case of requests queue is empty reset EP target_frame to initial value. This allow restarting ISOC traffic in case when function driver queued requests with interruptions. Tested-by: NZeng Tao <prime.zeng@hisilicon.com> Signed-off-by: NMinas Harutyunyan <hminas@synopsys.com> Signed-off-by: NFelipe Balbi <felipe.balbi@linux.intel.com>
-
- 21 5月, 2018 2 次提交
-
-
由 Artur Petrosyan 提交于
By clearing NAK status of EP, core will send ZLP to IN token and assert NAK interrupt relying on TxFIFO status only. The WA applies only to core versions from 2.72a to 4.00a (including both). Also for FS_IOT_1.00a and HS_IOT_1.00a. Signed-off-by: NArtur Petrosyan <arturp@synopsys.com> Signed-off-by: NMinas Harutyunyan <hminas@synopsys.com> Signed-off-by: NFelipe Balbi <felipe.balbi@linux.intel.com>
-
由 Grigor Tovmasyan 提交于
Added descriptions for all not described parameters. Fix all kernel doc's warnings. Acked-by: NMinas Harutyunyan <hminas@synopsys.com> Signed-off-by: NGrigor Tovmasyan <tovmasya@synopsys.com> Signed-off-by: NFelipe Balbi <felipe.balbi@linux.intel.com>
-
- 15 5月, 2018 5 次提交
-
-
由 Artur Petrosyan 提交于
The current frame_number is read from core for both device and host modes. Reading of the current frame number needs to be performed ASAP due to IRQ latency's. This is why, it is moved to common interrupt handler. Accordingly updated dwc2_gadget_target_frame_elapsed() function which uses stored frame_number instead of reading frame number. In cases when target frame value is incremented the frame_number is required to read again. Signed-off-by: NArtur Petrosyan <arturp@synopsys.com> Signed-off-by: NFelipe Balbi <felipe.balbi@linux.intel.com>
-
由 Artur Petrosyan 提交于
Crash caused by going out of "eps_out" array range. Iteration on "eps_out" changed to less than "num_of_eps". Signed-off-by: NArtur Petrosyan <arturp@synopsys.com> Signed-off-by: NFelipe Balbi <felipe.balbi@linux.intel.com>
-
由 Grigor Tovmasyan 提交于
Added GHWCFG4_IPG_ISOC_SUPPORTED and DCFG_IPG_ISOC_SUPPORDED bits definitions to enable/disable IPG feature. Added ipg_isoc_en core parameter which will indicate IPG support enable/disable and initialize it. Signed-off-by: NGrigor Tovmasyan <tovmasya@synopsys.com> Signed-off-by: NFelipe Balbi <felipe.balbi@linux.intel.com>
-
由 Minas Harutyunyan 提交于
In DDMA mode required to enable BNA interrupt for both directions. Signed-off-by: NMinas Harutyunyan <hminas@synopsys.com> Signed-off-by: NFelipe Balbi <felipe.balbi@linux.intel.com>
-
由 Minas Harutyunyan 提交于
Changed existing two descriptor-chain flow to one chain. In two-chain implementation BNA interrupt used for switching between two chains. BNA interrupt asserted because of returning to beginning of the chain based on L-bit of last descriptor. Because of that we lose packets. This issue resolved by using one desc-chain. Removed all staff related to two desc-chain flow from DDMA ISOC related functions. Removed request length checking from dwc2_gadget_fill_isoc_desc() function. Request length checking added to dwc2_hsotg_ep_queue() function. If request length greater than descriptor limits then request not added to queue. Additional checking done for High Bandwidth ISOC OUT's which not supported by driver. In dwc2_gadget_fill_isoc_desc() function also checked desc-chain status (full or not) to avoid of reusing not yet processed descriptors. In dwc2_gadget_start_isoc_ddma() function creation of desc-chain always started from descriptor 0. Before filling descriptors, they were initialized by HOST BUSY status. In dwc2_gadget_complete_isoc_request_ddma() added checking for desc-chain rollover. Also added checking completion status. Request completed successfully if DEV_DMA_STS is DEV_DMA_STS_SUCC, otherwise complete with actual=0. For systems with high IRQ latency added pointer compl_desc to next descriptor to be completed by XferCompl interrupt. This pointer replace descriptor index calculation based on DxEPDMA register. On descriptor completion interrupt processing all descriptors starting from compl_desc till descriptor which Buffer Status field not equal DMA_DONE status. Actually removed dwc2_gadget_start_next_isoc_ddma() function because now driver use only one desc-chain and instead that function added dwc2_gadget_handle_isoc_bna() function for handling BNA interrupts. Handling BNA interrupt done by flushing TxFIFOs for OUT EPs, completing request with actual=0 and resetting desc-chain number and target frame to initial values for restarting transfers. On handling NAK request completed with actual=0. Incremented target frame to allow fill desc chain and start transfers. In DDMA mode avoided of frame number incrementing, because tracking of frame number performed in dwc2_gadget_fill_isoc_desc() function. When core assert XferCompl along with BNA, we should ignore XferCompl in dwc2_hsotg_epint() function. On BNA interrupt replaced dwc2_gadget_start_next_isoc_ddma() by above mentioned BNA handler. In dwc2_hsotg_ep_enable() function added sanity check of bInterval for ISOC IN in DDMA mode, because HW doesn't supported EP's with bInterval more than 10 and check for mc for ISOC OUT transfers, because core doesn't support high bandwidth transfers. Signed-off-by: NMinas Harutyunyan <hminas@synopsys.com> Signed-off-by: NFelipe Balbi <felipe.balbi@linux.intel.com>
-
- 25 4月, 2018 1 次提交
-
-
由 Artur Petrosyan 提交于
By clearing NAK status of EP, core will send ZLP to IN token and assert NAK interrupt relying on TxFIFO status only. The WA applies only to core versions from 2.72a to 4.00a (including both). Also for FS_IOT_1.00a and HS_IOT_1.00a. Signed-off-by: NArtur Petrosyan <arturp@synopsys.com> Signed-off-by: NMinas Harutyunyan <hminas@synopsys.com> Signed-off-by: NFelipe Balbi <felipe.balbi@linux.intel.com>
-
- 13 3月, 2018 17 次提交
-
-
由 Vardan Mikayelyan 提交于
Add host/device hibernation functions which must be wrapped by core's dwc2_enter_hibernation()/dwc2_exit_hibernation() functions. Make dwc2_backup_global_registers dwc2_restore_global_register non-static to use them in both host/gadget sides. Added function names: dwc2_gadget_enter_hibernation() dwc2_gadget_exit_hibernation() dwc2_host_enter_hibernation() dwc2_host_exit_hibernation() Signed-off-by: NVardan Mikayelyan <mvardan@synopsys.com> Signed-off-by: NJohn Youn <johnyoun@synopsys.com> Signed-off-by: NArtur Petrosyan <arturp@synopsys.com> Signed-off-by: NMinas Harutyunyan <hminas@synopsys.com> Signed-off-by: NGrigor Tovmasyan <tovmasya@synopsys.com> Signed-off-by: NFelipe Balbi <felipe.balbi@linux.intel.com>
-
由 Vardan Mikayelyan 提交于
It will be set once corresponding set_feature command comes. True if device is allowed to wake-up host by remote-wakeup signalling. This is preparation for remote wake-up support implementation, it will not be implemented until gadget stack provide interface for bringing remote wake-up signalling. Signed-off-by: NVardan Mikayelyan <mvardan@synopsys.com> Signed-off-by: NJohn Youn <johnyoun@synopsys.com> Signed-off-by: NGrigor Tovmasyan <tovmasya@synopsys.com> Signed-off-by: NFelipe Balbi <felipe.balbi@linux.intel.com>
-
由 Vardan Mikayelyan 提交于
Add parameter remote_wakeup to dwc2_restore_device_registers() to be able to restore device registers according to programming guide for dwc-otg. It says that in case of rem_wakeup DCTL must not be restored here. Remove setting of DCTL_PWRONPRGDONE from this function, because it will be done in function responsible for exiting from hibernation. WA for enabled EPx's IN and OUT in DDMA mode. On entering to hibernation wrong value read and saved from DIEPDMAx, as result BNA interrupt asserted on hibernation exit by restoring from saved area. Signed-off-by: NVardan Mikayelyan <mvardan@synopsys.com> Signed-off-by: NJohn Youn <johnyoun@synopsys.com> Signed-off-by: NArtur Petrosyan <arturp@synopsys.com> Signed-off-by: NMinas Harutyunyan <hminas@synopsys.com> Signed-off-by: NGrigor Tovmasyan <tovmasya@synopsys.com> Signed-off-by: NFelipe Balbi <felipe.balbi@linux.intel.com>
-
由 Vardan Mikayelyan 提交于
Moved dtxfsiz from dwc2_gregs_backup to dwc2_dregs_backup, because it is device register. Signed-off-by: NVardan Mikayelyan <mvardan@synopsys.com> Signed-off-by: NJohn Youn <johnyoun@synopsys.com> Signed-off-by: NGrigor Tovmasyan <tovmasya@synopsys.com> Signed-off-by: NFelipe Balbi <felipe.balbi@linux.intel.com>
-
由 Vardan Mikayelyan 提交于
No-op change, only rename. This code was misnamed originally. It was only responsible for partial power down and not for hibernation. Rename core_params->hibernation to core_params->power_down, dwc2_set_param_hibernation() to dwc2_set_param_power_down(). Signed-off-by: NVardan Mikayelyan <mvardan@synopsys.com> Signed-off-by: NJohn Youn <johnyoun@synopsys.com> Signed-off-by: NGrigor Tovmasyan <tovmasya@synopsys.com> Signed-off-by: NFelipe Balbi <felipe.balbi@linux.intel.com>
-
由 John Youn 提交于
Set 'lpm_capable' flag in the gadget structure so indicating that LPM is supported. Signed-off-by: NJohn Youn <johnyoun@synopsys.com> Signed-off-by: NSevak Arakelyan <sevaka@synopsys.com> Signed-off-by: NGrigor Tovmasyan <tovmasya@synopsys.com> Signed-off-by: NFelipe Balbi <felipe.balbi@linux.intel.com>
-
由 Gustavo A. R. Silva 提交于
Assign true or false to boolean variables instead of an integer value. This issue was detected with the help of Coccinelle. Acked-by: NJohn Youn <johnyoun@synopsys.com> Signed-off-by: NGustavo A. R. Silva <gustavo@embeddedor.com> Signed-off-by: NFelipe Balbi <felipe.balbi@linux.intel.com>
-
由 Grigor Tovmasyan 提交于
Added core state checking in dwc2_hsotg_ep_queue() function to make sure that application will submit requests only in L0 state. Signed-off-by: NGrigor Tovmasyan <tovmasya@synopsys.com> Signed-off-by: NFelipe Balbi <felipe.balbi@linux.intel.com>
-
由 Sevak Arakelyan 提交于
Configure core in device mode to support LPM according to programming guide. Device will start giving valid responses for LPM tokens. After this patch device side LPM will start working. Signed-off-by: NSevak Arakelyan <sevaka@synopsys.com> Signed-off-by: NGrigor Tovmasyan <tovmasya@synopsys.com> Signed-off-by: NFelipe Balbi <felipe.balbi@linux.intel.com>
-
由 Sevak Arakelyan 提交于
Enable "LPM Transaction Received" interrupt for receive an interrupt when host will send LPM token. Signed-off-by: NSevak Arakelyan <sevaka@synopsys.com> Signed-off-by: NGrigor Tovmasyan <tovmasya@synopsys.com> Signed-off-by: NFelipe Balbi <felipe.balbi@linux.intel.com>
-
由 Razmik Karapetyan 提交于
Added function for supporting Active Clock Gating functionality in the driver. PCGCCTL1 (Power and Clock Control) register will be used for controlling the core`s active clock gating feature, and the previously reserved 12th bit in GHWCFG4 now indicates that the controller supports the Dynamic Power Reduction (Active Clock Gating) during no traffic scenarios such as L0, idle, resume and suspend states. dwc2_enable_acg() function sets GATEEN bit in PCGCCTL1 register and enables ACG, if it supported. According to ACG functional specification, enabling of ACG feature in host mode done in host initialization, before turning Vbus on, specifically in dwc2_core_host_init function. Enabling of ACG feature in device mode done in device initialization, before clearing the SftDiscon bit in DCTL. This bit was cleared in dwc2_hsotg_core_connect() function.So dwc2_enable_acg() called before dwc2_core_connect() calls. Signed-off-by: NRazmik Karapetyan <razmik@synopsys.com> Signed-off-by: NGrigor Tovmasyan <tovmasya@synopsys.com> Signed-off-by: NFelipe Balbi <felipe.balbi@linux.intel.com>
-
由 Razmik Karapetyan 提交于
Renamed __orr32 and __bic32 function names to more descriptive dwc2_set_bit and dwc2_clear_bit respectively. Acked-by: NJohn Youn <johnyoun@synopsys.com> Signed-off-by: NRazmik Karapetyan <razmik@synopsys.com> Signed-off-by: NGrigor Tovmasyan <tovmasya@synopsys.com> Signed-off-by: NFelipe Balbi <felipe.balbi@linux.intel.com>
-
由 Razmik Karapetyan 提交于
Disabled only unmasked endpoints based on DAINTMSK register. This will allow to minimize GINTSTS_GOUTNAKEFF interrupt handling. Acked-by: NJohn Youn <johnyoun@synopsys.com> Signed-off-by: NRazmik Karapetyan <razmik@synopsys.com> Signed-off-by: NMinas Harutyunyan <hminas@synopsys.com> Signed-off-by: NGrigor Tovmasyan <tovmasya@synopsys.com> Signed-off-by: NFelipe Balbi <felipe.balbi@linux.intel.com>
-
由 Razmik Karapetyan 提交于
In 'for' loop skipped masked and non-ISOC EPs. Also breaked 'for' loop after setting SGOUTNAK in DCTL,when one enabled EP was detected. This will allow to minimize incomplete ISOC OUT interrupt handling. Acked-by: NJohn Youn <johnyoun@synopsys.com> Signed-off-by: NRazmik Karapetyan <razmik@synopsys.com> Signed-off-by: NMinas Harutyunyan <hminas@synopsys.com> Signed-off-by: NGrigor Tovmasyan <tovmasya@synopsys.com> Signed-off-by: NFelipe Balbi <felipe.balbi@linux.intel.com>
-
由 Razmik Karapetyan 提交于
Disabled only that ISOC endpoints,for which interrupt bit was set in the DAINTMSK register. This will allow to minimize incomplete ISOC IN interrupt handling. Acked-by: NJohn Youn <johnyoun@synopsys.com> Signed-off-by: NRazmik Karapetyan <razmik@synopsys.com> Signed-off-by: NMinas Harutyunyan <hminas@synopsys.com> Signed-off-by: NGrigor Tovmasyan <tovmasya@synopsys.com> Signed-off-by: NFelipe Balbi <felipe.balbi@linux.intel.com>
-
由 Razmik Karapetyan 提交于
In dwc2_hsotg_core_init_disconnected() function used AHB burst size parameter, instead of calculating already calculated value. Acked-by: NJohn Youn <johnyoun@synopsys.com> Signed-off-by: NRazmik Karapetyan <razmik@synopsys.com> Signed-off-by: NGrigor Tovmasyan <tovmasya@synopsys.com> Signed-off-by: NFelipe Balbi <felipe.balbi@linux.intel.com>
-
由 Sevak Arakelyan 提交于
Move dwc2_hsotg_wait_bit_set function to core.c so it can be used anywhere in the code. Added dwc2_hsotg_wait_bit_clear function in core.c. Replace all the parts of register bit polling code with dwc2_hsotg_wait_bit_set or dwc2_hsotg_wait_bit_clear functions calls depends on code logic. Acked-by: NJohn Youn <johnyoun@synopsys.com> Signed-off-by: NSevak Arakelyan <sevaka@synopsys.com> Signed-off-by: NGrigor Tovmasyan <tovmasya@synopsys.com> Signed-off-by: NFelipe Balbi <felipe.balbi@linux.intel.com>
-
- 08 3月, 2018 1 次提交
-
-
由 Vardan Mikayelyan 提交于
The irq is available in hsotg already, so there's no need to pass it as separate function parameter. Signed-off-by: NVardan Mikayelyan <mvardan@synopsys.com> Signed-off-by: NGrigor Tovmasyan <tovmasya@synopsys.com> Signed-off-by: NFelipe Balbi <felipe.balbi@linux.intel.com>
-
- 12 2月, 2018 3 次提交
-
-
由 Vardan Mikayelyan 提交于
We should call dwc2_hsotg_enqueue_setup() after properly setting lx_state. Because it may cause error-out from dwc2_hsotg_enqueue_setup() due to wrong value in lx_state. Issue can be reproduced by loading driver while connected A-Connector (start in A-HOST mode) then disconnect A-Connector to switch to B-DEVICE. Acked-by: NJohn Youn <johnyoun@synopsys.com> Signed-off-by: NVardan Mikayelyan <mvardan@synopsys.com> Signed-off-by: NGrigor Tovmasyan <tovmasya@synopsys.com> Signed-off-by: NFelipe Balbi <felipe.balbi@linux.intel.com>
-
由 Minas Harutyunyan 提交于
STSPHSERCVD (status phase received) interrupt should be handled when EP0 is in DWC2_EP0_DATA_OUT state. Sometimes STSPHSERCVD interrupt asserted , when EP0 is not in DATA_OUT state. Spurios interrupt. Acked-by: NJohn Youn <johnyoun@synopsys.com> Signed-off-by: NMinas Harutyunyan <hminas@synopsys.com> Signed-off-by: NGrigor Tovmasyan <tovmasya@synopsys.com> Signed-off-by: NFelipe Balbi <felipe.balbi@linux.intel.com>
-
由 Minas Harutyunyan 提交于
In some cases device sending ZLP IN on non EP0 which reassigning EP0 OUT descriptor pointer to that EP. Dedicated for EP0 OUT descriptor multiple time re-used by other EP while that descriptor already in use by EP0 OUT for SETUP transaction. As result when SETUP packet received BNA interrupt asserting. In dwc2_hsotg_program_zlp() function dwc2_gadget_set_ep0_desc_chain() must be called only for EP0. Acked-by: NJohn Youn <johnyoun@synopsys.com> Signed-off-by: NMinas Harutyunyan <hminas@synopsys.com> Signed-off-by: NGrigor Tovmasyan <tovmasya@synopsys.com> Signed-off-by: NFelipe Balbi <felipe.balbi@linux.intel.com>
-