102 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			102 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| // SPDX-License-Identifier: GPL-2.0
 | |
| /*
 | |
|  * Copyright (C) 2014 Freescale Semiconductor, Inc.
 | |
|  *
 | |
|  * Author: Jun Li
 | |
|  */
 | |
| 
 | |
| #ifndef __DRIVERS_USB_CHIPIDEA_OTG_FSM_H
 | |
| #define __DRIVERS_USB_CHIPIDEA_OTG_FSM_H
 | |
| 
 | |
| #include <linux/usb/otg-fsm.h>
 | |
| 
 | |
| /*
 | |
|  *  A-DEVICE timing  constants
 | |
|  */
 | |
| 
 | |
| /* Wait for VBUS Rise  */
 | |
| #define TA_WAIT_VRISE        (100)	/* a_wait_vrise: section 7.1.2
 | |
| 					 * a_wait_vrise_tmr: section 7.4.5.1
 | |
| 					 * TA_VBUS_RISE <= 100ms, section 4.4
 | |
| 					 * Table 4-1: Electrical Characteristics
 | |
| 					 * ->DC Electrical Timing
 | |
| 					 */
 | |
| /* Wait for VBUS Fall  */
 | |
| #define TA_WAIT_VFALL        (1000)	/* a_wait_vfall: section 7.1.7
 | |
| 					 * a_wait_vfall_tmr: section: 7.4.5.2
 | |
| 					 */
 | |
| /* Wait for B-Connect */
 | |
| #define TA_WAIT_BCON         (10000)	/* a_wait_bcon: section 7.1.3
 | |
| 					 * TA_WAIT_BCON: should be between 1100
 | |
| 					 * and 30000 ms, section 5.5, Table 5-1
 | |
| 					 */
 | |
| /* A-Idle to B-Disconnect */
 | |
| #define TA_AIDL_BDIS         (5000)	/* a_suspend min 200 ms, section 5.2.1
 | |
| 					 * TA_AIDL_BDIS: section 5.5, Table 5-1
 | |
| 					 */
 | |
| /* B-Idle to A-Disconnect */
 | |
| #define TA_BIDL_ADIS         (500)	/* TA_BIDL_ADIS: section 5.2.1
 | |
| 					 * 500ms is used for B switch to host
 | |
| 					 * for safe
 | |
| 					 */
 | |
| 
 | |
| /*
 | |
|  * B-device timing constants
 | |
|  */
 | |
| 
 | |
| /* Data-Line Pulse Time*/
 | |
| #define TB_DATA_PLS          (10)	/* b_srp_init,continue 5~10ms
 | |
| 					 * section:5.1.3
 | |
| 					 */
 | |
| /* SRP Fail Time  */
 | |
| #define TB_SRP_FAIL          (6000)	/* b_srp_init,fail time 5~6s
 | |
| 					 * section:5.1.6
 | |
| 					 */
 | |
| /* A-SE0 to B-Reset  */
 | |
| #define TB_ASE0_BRST         (155)	/* minimum 155 ms, section:5.3.1 */
 | |
| /* SE0 Time Before SRP */
 | |
| #define TB_SE0_SRP           (1000)	/* b_idle,minimum 1s, section:5.1.2 */
 | |
| /* SSEND time before SRP */
 | |
| #define TB_SSEND_SRP         (1500)	/* minimum 1.5 sec, section:5.1.2 */
 | |
| 
 | |
| #define TB_AIDL_BDIS         (20)	/* 4ms ~ 150ms, section 5.2.1 */
 | |
| 
 | |
| #if IS_ENABLED(CONFIG_USB_OTG_FSM)
 | |
| 
 | |
| int ci_hdrc_otg_fsm_init(struct ci_hdrc *ci);
 | |
| int ci_otg_fsm_work(struct ci_hdrc *ci);
 | |
| irqreturn_t ci_otg_fsm_irq(struct ci_hdrc *ci);
 | |
| void ci_hdrc_otg_fsm_start(struct ci_hdrc *ci);
 | |
| void ci_hdrc_otg_fsm_remove(struct ci_hdrc *ci);
 | |
| 
 | |
| #else
 | |
| 
 | |
| static inline int ci_hdrc_otg_fsm_init(struct ci_hdrc *ci)
 | |
| {
 | |
| 	return 0;
 | |
| }
 | |
| 
 | |
| static inline int ci_otg_fsm_work(struct ci_hdrc *ci)
 | |
| {
 | |
| 	return -ENXIO;
 | |
| }
 | |
| 
 | |
| static inline irqreturn_t ci_otg_fsm_irq(struct ci_hdrc *ci)
 | |
| {
 | |
| 	return IRQ_NONE;
 | |
| }
 | |
| 
 | |
| static inline void ci_hdrc_otg_fsm_start(struct ci_hdrc *ci)
 | |
| {
 | |
| 
 | |
| }
 | |
| 
 | |
| static inline void ci_hdrc_otg_fsm_remove(struct ci_hdrc *ci)
 | |
| {
 | |
| 
 | |
| }
 | |
| 
 | |
| #endif
 | |
| 
 | |
| #endif /* __DRIVERS_USB_CHIPIDEA_OTG_FSM_H */
 | 
