int __init s5p6442_pm_init(void) { printk("S5P6442 Power Management, (c) 2008 Samsung Electronics\n"); #ifdef CONFIG_S5P64XX_POWER_GATING s5p6442_pwrgate_init(); #else #ifdef CONFIG_S5P64XX_CLOCK_GATING s5p6442_clkgate_init(); #endif /* CONFIG_S5P64XX_CLOCK_GATING */ #endif /* CONFIG_S5P64XX_POWER_GATING */ suspend_set_ops(&s5p6442_pm_ops); /* set default value for EINT_WAKEUP_MASK */ s3c_irqwake_eintmask = 0x00000000; s3c_irqwake_eintmask |= (1 << 21); /* BT_HOST_WAKE */ return 0; }
void s5p6442_pwrgate_init(void) { u32 tmp; spin_lock_init(&power_lock); s5p6442_clkgate_init(); tmp = __raw_readl(S5P_NORMAL_CFG); #ifdef S5P6442_POWER_GATING_MFC tmp &= ~(1 << S5P6442_MFC_ID); #endif /* S5P6442_POWER_GATING_MFC */ #ifdef S5P6442_POWER_GATING_G3D tmp &= ~(1 << S5P6442_G3D_ID); #endif /* S5P6442_POWER_GATING_G3D */ #ifdef S5P6442_POWER_GATING_TV tmp &= ~(1 << S5P6442_TV_ID); #endif /* S5P6442_POWER_GATING_TV */ #ifdef S5P6442_POWER_GATING_CAM tmp &= ~(1 << S5P6442_CAM_ID); #endif /* S5P6442_POWER_GATING_CAM */ #ifdef S5P6442_POWER_GATING_AUDIO tmp &= ~(1 << S5P6442_AUDIO_ID); #endif /* S5P6442_POWER_GATING_AUDIO */ #ifdef S5P6442_POWER_GATING_IROM tmp &= ~(1 << S5P6442_IROM_ID); #endif __raw_writel(tmp, S5P_NORMAL_CFG); return; }