mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-04 02:30:34 +02:00 
			
		
		
		
	usb: mtu3: support ip-sleep wakeup for MT8183
Add support ip-sleep wakeup for MT8183, it's similar to MT8173, and it's also a specific one, but not following IPM rule. Due to the index 2 already used by many DTS, it's better to keep it unchanged for backward compatibility, treat specific ones without following IPM rule as revision 1.x, meanwhile reserve 3~10 for later revision that follows the IPM rule. Signed-off-by: Chunfeng Yun <chunfeng.yun@mediatek.com> Link: https://lore.kernel.org/r/1616482975-17841-10-git-send-email-chunfeng.yun@mediatek.com Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
		
							parent
							
								
									331c505894
								
							
						
					
					
						commit
						b1a344589e
					
				
					 1 changed files with 12 additions and 0 deletions
				
			
		| 
						 | 
					@ -24,6 +24,12 @@
 | 
				
			||||||
#define WC1_IS_EN	BIT(25)
 | 
					#define WC1_IS_EN	BIT(25)
 | 
				
			||||||
#define WC1_IS_P	BIT(6)  /* polarity for ip sleep */
 | 
					#define WC1_IS_P	BIT(6)  /* polarity for ip sleep */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* mt8183 */
 | 
				
			||||||
 | 
					#define PERI_WK_CTRL0	0x0
 | 
				
			||||||
 | 
					#define WC0_IS_C(x)	((u32)(((x) & 0xf) << 28))  /* cycle debounce */
 | 
				
			||||||
 | 
					#define WC0_IS_P	BIT(12)	/* polarity */
 | 
				
			||||||
 | 
					#define WC0_IS_EN	BIT(6)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* mt2712 etc */
 | 
					/* mt2712 etc */
 | 
				
			||||||
#define PERI_SSUSB_SPM_CTRL	0x0
 | 
					#define PERI_SSUSB_SPM_CTRL	0x0
 | 
				
			||||||
#define SSC_IP_SLEEP_EN	BIT(4)
 | 
					#define SSC_IP_SLEEP_EN	BIT(4)
 | 
				
			||||||
| 
						 | 
					@ -32,6 +38,7 @@
 | 
				
			||||||
enum ssusb_uwk_vers {
 | 
					enum ssusb_uwk_vers {
 | 
				
			||||||
	SSUSB_UWK_V1 = 1,
 | 
						SSUSB_UWK_V1 = 1,
 | 
				
			||||||
	SSUSB_UWK_V2,
 | 
						SSUSB_UWK_V2,
 | 
				
			||||||
 | 
						SSUSB_UWK_V1_1 = 101,	/* specific revision 1.01 */
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
| 
						 | 
					@ -48,6 +55,11 @@ static void ssusb_wakeup_ip_sleep_set(struct ssusb_mtk *ssusb, bool enable)
 | 
				
			||||||
		msk = WC1_IS_EN | WC1_IS_C(0xf) | WC1_IS_P;
 | 
							msk = WC1_IS_EN | WC1_IS_C(0xf) | WC1_IS_P;
 | 
				
			||||||
		val = enable ? (WC1_IS_EN | WC1_IS_C(0x8)) : 0;
 | 
							val = enable ? (WC1_IS_EN | WC1_IS_C(0x8)) : 0;
 | 
				
			||||||
		break;
 | 
							break;
 | 
				
			||||||
 | 
						case SSUSB_UWK_V1_1:
 | 
				
			||||||
 | 
							reg = ssusb->uwk_reg_base + PERI_WK_CTRL0;
 | 
				
			||||||
 | 
							msk = WC0_IS_EN | WC0_IS_C(0xf) | WC0_IS_P;
 | 
				
			||||||
 | 
							val = enable ? (WC0_IS_EN | WC0_IS_C(0x8)) : 0;
 | 
				
			||||||
 | 
							break;
 | 
				
			||||||
	case SSUSB_UWK_V2:
 | 
						case SSUSB_UWK_V2:
 | 
				
			||||||
		reg = ssusb->uwk_reg_base + PERI_SSUSB_SPM_CTRL;
 | 
							reg = ssusb->uwk_reg_base + PERI_SSUSB_SPM_CTRL;
 | 
				
			||||||
		msk = SSC_IP_SLEEP_EN | SSC_SPM_INT_EN;
 | 
							msk = SSC_IP_SLEEP_EN | SSC_SPM_INT_EN;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in a new issue