| 
					
				 | 
			
			
				@@ -159,3 +159,129 @@ static struct clkdm_dep neon_wkdeps[] = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	{ NULL }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+/* Sleep dependency source arrays for OMAP3-specific clkdms */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+/* 3430: CM_SLEEPDEP_DSS: MPU, IVA */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+static struct clkdm_dep dss_sleepdeps[] = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	{ .clkdm_name = "mpu_clkdm" }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	{ .clkdm_name = "iva2_clkdm" }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	{ NULL }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+static struct clkdm_dep dss_am35x_sleepdeps[] = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	{ .clkdm_name = "mpu_clkdm" }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	{ NULL }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+/* 3430: CM_SLEEPDEP_PER: MPU, IVA */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+static struct clkdm_dep per_sleepdeps[] = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	{ .clkdm_name = "mpu_clkdm" }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	{ .clkdm_name = "iva2_clkdm" }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	{ NULL }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+static struct clkdm_dep per_am35x_sleepdeps[] = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	{ .clkdm_name = "mpu_clkdm" }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	{ NULL }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+/* 3430ES2: CM_SLEEPDEP_USBHOST: MPU, IVA */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+static struct clkdm_dep usbhost_sleepdeps[] = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	{ .clkdm_name = "mpu_clkdm" }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	{ .clkdm_name = "iva2_clkdm" }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	{ NULL }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+static struct clkdm_dep usbhost_am35x_sleepdeps[] = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	{ .clkdm_name = "mpu_clkdm" }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	{ NULL }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+/* 3430: CM_SLEEPDEP_CAM: MPU */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+static struct clkdm_dep cam_sleepdeps[] = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	{ .clkdm_name = "mpu_clkdm" }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	{ NULL }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+/* 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * 3430ES1: CM_SLEEPDEP_GFX: MPU 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * 3430ES2: CM_SLEEPDEP_SGX: MPU 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * These can share data since they will never be present simultaneously 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * on the same device. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+static struct clkdm_dep gfx_sgx_sleepdeps[] = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	{ .clkdm_name = "mpu_clkdm" }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	{ NULL }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+/* 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * OMAP3 clockdomains 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+static struct clockdomain mpu_3xxx_clkdm = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.name		= "mpu_clkdm", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.pwrdm		= { .name = "mpu_pwrdm" }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.flags		= CLKDM_CAN_HWSUP | CLKDM_CAN_FORCE_WAKEUP, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.dep_bit	= OMAP3430_EN_MPU_SHIFT, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.wkdep_srcs	= mpu_3xxx_wkdeps, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.clktrctrl_mask = OMAP3430_CLKTRCTRL_MPU_MASK, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+static struct clockdomain mpu_am35x_clkdm = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.name		= "mpu_clkdm", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.pwrdm		= { .name = "mpu_pwrdm" }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.flags		= CLKDM_CAN_HWSUP | CLKDM_CAN_FORCE_WAKEUP, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.dep_bit	= OMAP3430_EN_MPU_SHIFT, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.wkdep_srcs	= mpu_am35x_wkdeps, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.clktrctrl_mask = OMAP3430_CLKTRCTRL_MPU_MASK, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+static struct clockdomain neon_clkdm = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.name		= "neon_clkdm", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.pwrdm		= { .name = "neon_pwrdm" }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.flags		= CLKDM_CAN_HWSUP_SWSUP, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.wkdep_srcs	= neon_wkdeps, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.clktrctrl_mask = OMAP3430_CLKTRCTRL_NEON_MASK, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+static struct clockdomain iva2_clkdm = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.name		= "iva2_clkdm", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.pwrdm		= { .name = "iva2_pwrdm" }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.flags		= CLKDM_CAN_HWSUP_SWSUP, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.dep_bit	= OMAP3430_PM_WKDEP_MPU_EN_IVA2_SHIFT, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.wkdep_srcs	= iva2_wkdeps, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.clktrctrl_mask = OMAP3430_CLKTRCTRL_IVA2_MASK, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+static struct clockdomain gfx_3430es1_clkdm = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.name		= "gfx_clkdm", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.pwrdm		= { .name = "gfx_pwrdm" }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.flags		= CLKDM_CAN_HWSUP_SWSUP, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.wkdep_srcs	= gfx_sgx_3xxx_wkdeps, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.sleepdep_srcs	= gfx_sgx_sleepdeps, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.clktrctrl_mask = OMAP3430ES1_CLKTRCTRL_GFX_MASK, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+static struct clockdomain sgx_clkdm = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.name		= "sgx_clkdm", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.pwrdm		= { .name = "sgx_pwrdm" }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.flags		= CLKDM_CAN_HWSUP_SWSUP, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.wkdep_srcs	= gfx_sgx_3xxx_wkdeps, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.sleepdep_srcs	= gfx_sgx_sleepdeps, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.clktrctrl_mask = OMAP3430ES2_CLKTRCTRL_SGX_MASK, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+static struct clockdomain sgx_am35x_clkdm = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.name		= "sgx_clkdm", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.pwrdm		= { .name = "sgx_pwrdm" }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.flags		= CLKDM_CAN_HWSUP_SWSUP, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.wkdep_srcs	= gfx_sgx_am35x_wkdeps, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.sleepdep_srcs	= gfx_sgx_sleepdeps, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.clktrctrl_mask = OMAP3430ES2_CLKTRCTRL_SGX_MASK, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+/* 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * The die-to-die clockdomain was documented in the 34xx ES1 TRM, but 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * then that information was removed from the 34xx ES2+ TRM.  It is 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * unclear whether the core is still there, but the clockdomain logic 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * is there, and must be programmed to an appropriate state if the 
			 |