prm2xxx.c 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. /*
  2. * OMAP2xxx PRM module functions
  3. *
  4. * Copyright (C) 2010-2012 Texas Instruments, Inc.
  5. * Copyright (C) 2010 Nokia Corporation
  6. * Benoît Cousson
  7. * Paul Walmsley
  8. * Rajendra Nayak <rnayak@ti.com>
  9. *
  10. * This program is free software; you can redistribute it and/or modify
  11. * it under the terms of the GNU General Public License version 2 as
  12. * published by the Free Software Foundation.
  13. */
  14. #include <linux/kernel.h>
  15. #include <linux/errno.h>
  16. #include <linux/err.h>
  17. #include <linux/io.h>
  18. #include <linux/irq.h>
  19. #include "common.h"
  20. #include <plat/cpu.h>
  21. #include <plat/prcm.h>
  22. #include "vp.h"
  23. #include "powerdomain.h"
  24. #include "clockdomain.h"
  25. #include "prm2xxx.h"
  26. #include "cm2xxx_3xxx.h"
  27. #include "prm-regbits-24xx.h"
  28. int omap2xxx_clkdm_sleep(struct clockdomain *clkdm)
  29. {
  30. omap2_prm_set_mod_reg_bits(OMAP24XX_FORCESTATE_MASK,
  31. clkdm->pwrdm.ptr->prcm_offs,
  32. OMAP2_PM_PWSTCTRL);
  33. return 0;
  34. }
  35. int omap2xxx_clkdm_wakeup(struct clockdomain *clkdm)
  36. {
  37. omap2_prm_clear_mod_reg_bits(OMAP24XX_FORCESTATE_MASK,
  38. clkdm->pwrdm.ptr->prcm_offs,
  39. OMAP2_PM_PWSTCTRL);
  40. return 0;
  41. }
  42. struct pwrdm_ops omap2_pwrdm_operations = {
  43. .pwrdm_set_next_pwrst = omap2_pwrdm_set_next_pwrst,
  44. .pwrdm_read_next_pwrst = omap2_pwrdm_read_next_pwrst,
  45. .pwrdm_read_pwrst = omap2_pwrdm_read_pwrst,
  46. .pwrdm_set_logic_retst = omap2_pwrdm_set_logic_retst,
  47. .pwrdm_set_mem_onst = omap2_pwrdm_set_mem_onst,
  48. .pwrdm_set_mem_retst = omap2_pwrdm_set_mem_retst,
  49. .pwrdm_read_mem_pwrst = omap2_pwrdm_read_mem_pwrst,
  50. .pwrdm_read_mem_retst = omap2_pwrdm_read_mem_retst,
  51. .pwrdm_wait_transition = omap2_pwrdm_wait_transition,
  52. };