mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-04 10:40:15 +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_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 */
 | 
			
		||||
#define PERI_SSUSB_SPM_CTRL	0x0
 | 
			
		||||
#define SSC_IP_SLEEP_EN	BIT(4)
 | 
			
		||||
| 
						 | 
				
			
			@ -32,6 +38,7 @@
 | 
			
		|||
enum ssusb_uwk_vers {
 | 
			
		||||
	SSUSB_UWK_V1 = 1,
 | 
			
		||||
	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;
 | 
			
		||||
		val = enable ? (WC1_IS_EN | WC1_IS_C(0x8)) : 0;
 | 
			
		||||
		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:
 | 
			
		||||
		reg = ssusb->uwk_reg_base + PERI_SSUSB_SPM_CTRL;
 | 
			
		||||
		msk = SSC_IP_SLEEP_EN | SSC_SPM_INT_EN;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue