Lines Matching refs:powerdomain
3 * OMAP powerdomain control
31 #include "powerdomain.h"
65 static struct powerdomain *_pwrdm_lookup(const char *name)
67 struct powerdomain *pwrdm, *temp_pwrdm;
82 * _pwrdm_register - register a powerdomain
83 * @pwrdm: struct powerdomain * to register
85 * Adds a powerdomain to the internal powerdomain list. Returns
86 * -EINVAL if given a null pointer, -EEXIST if a powerdomain is
89 static int _pwrdm_register(struct powerdomain *pwrdm)
99 pr_err("powerdomain: %s: missing OMAP4 PRCM partition ID\n",
113 pr_err("powerdomain: %s: voltagedomain %s does not exist\n",
124 /* Initialize the powerdomain's state counter */
137 pr_debug("powerdomain: registered %s\n", pwrdm->name);
142 static void _update_logic_membank_counters(struct powerdomain *pwrdm)
161 static int _pwrdm_state_switch(struct powerdomain *pwrdm, int flag)
209 static int _pwrdm_pre_transition_cb(struct powerdomain *pwrdm, void *unused)
216 static int _pwrdm_post_transition_cb(struct powerdomain *pwrdm, void *unused)
224 * @pwrdm: struct powerdomain * to operate on
228 * Determine whether the powerdomain needs to be turned on before
230 * omap_set_pwrdm_state(). NOTE that if the powerdomain contains
236 static u8 _pwrdm_save_clkdm_state_and_activate(struct powerdomain *pwrdm,
259 * @pwrdm: struct powerdomain * to operate on
265 * the powerdomain contains multiple clockdomains, this assumes that
270 static void _pwrdm_restore_clkdm_state(struct powerdomain *pwrdm,
289 * pwrdm_register_platform_funcs - register powerdomain implementation fns
293 * powerdomain functions on different OMAP SoCs. Should be called
313 * @ps: pointer to an array of struct powerdomain to register
321 int pwrdm_register_pwrdms(struct powerdomain **ps)
323 struct powerdomain **p = NULL;
354 * pwrdm_complete_init - set up the powerdomain layer
357 * powerdomain code. Currently, this programs the next power state
358 * for each powerdomain to ON. This prevents powerdomains from
366 struct powerdomain *temp_p;
385 * pwrdm_lock - acquire a Linux spinlock on a powerdomain
386 * @pwrdm: struct powerdomain * to lock
388 * Acquire the powerdomain spinlock on @pwrdm. No return value.
390 void pwrdm_lock(struct powerdomain *pwrdm)
397 * pwrdm_unlock - release a Linux spinlock on a powerdomain
398 * @pwrdm: struct powerdomain * to unlock
400 * Release the powerdomain spinlock on @pwrdm. No return value.
402 void pwrdm_unlock(struct powerdomain *pwrdm)
409 * pwrdm_lookup - look up a powerdomain by name, return a pointer
410 * @name: name of powerdomain
412 * Find a registered powerdomain by its name @name. Returns a pointer
413 * to the struct powerdomain if found, or NULL otherwise.
415 struct powerdomain *pwrdm_lookup(const char *name)
417 struct powerdomain *pwrdm;
431 * Call the supplied function @fn for each registered powerdomain.
437 int pwrdm_for_each(int (*fn)(struct powerdomain *pwrdm, void *user),
440 struct powerdomain *temp_pwrdm;
456 * pwrdm_add_clkdm - add a clockdomain to a powerdomain
457 * @pwrdm: struct powerdomain * to add the clockdomain to
458 * @clkdm: struct clockdomain * to associate with a powerdomain
460 * Associate the clockdomain @clkdm with a powerdomain @pwrdm. This
465 int pwrdm_add_clkdm(struct powerdomain *pwrdm, struct clockdomain *clkdm)
473 pr_debug("powerdomain: %s: associating clockdomain %s\n",
488 pr_debug("powerdomain: %s: increase PWRDM_MAX_CLKDMS for clkdm %s\n",
504 * pwrdm_get_mem_bank_count - get number of memory banks in this powerdomain
505 * @pwrdm: struct powerdomain *
507 * Return the number of controllable memory banks in powerdomain @pwrdm,
508 * starting with 1. Returns -EINVAL if the powerdomain pointer is null.
510 int pwrdm_get_mem_bank_count(struct powerdomain *pwrdm)
519 * pwrdm_set_next_pwrst - set next powerdomain power state
520 * @pwrdm: struct powerdomain * to set
523 * Set the powerdomain @pwrdm's next power state to @pwrst. The powerdomain
525 * have not been satisfied. Returns -EINVAL if the powerdomain pointer is
529 int pwrdm_set_next_pwrst(struct powerdomain *pwrdm, u8 pwrst)
539 pr_debug("powerdomain: %s: setting next powerstate to %0x\n",
554 * pwrdm_read_next_pwrst - get next powerdomain power state
555 * @pwrdm: struct powerdomain * to get power state
557 * Return the powerdomain @pwrdm's next power state. Returns -EINVAL
558 * if the powerdomain pointer is null or returns the next power state
561 int pwrdm_read_next_pwrst(struct powerdomain *pwrdm)
575 * pwrdm_read_pwrst - get current powerdomain power state
576 * @pwrdm: struct powerdomain * to get power state
578 * Return the powerdomain @pwrdm's current power state. Returns -EINVAL
579 * if the powerdomain pointer is null or returns the current power state
583 int pwrdm_read_pwrst(struct powerdomain *pwrdm)
600 * pwrdm_read_prev_pwrst - get previous powerdomain power state
601 * @pwrdm: struct powerdomain * to get previous power state
603 * Return the powerdomain @pwrdm's previous power state. Returns -EINVAL
604 * if the powerdomain pointer is null or returns the previous power state
607 int pwrdm_read_prev_pwrst(struct powerdomain *pwrdm)
621 * pwrdm_set_logic_retst - set powerdomain logic power state upon retention
622 * @pwrdm: struct powerdomain * to set
626 * powerdomain @pwrdm will enter when the powerdomain enters retention.
628 * -EINVAL if the powerdomain pointer is null or the target power
631 int pwrdm_set_logic_retst(struct powerdomain *pwrdm, u8 pwrst)
641 pr_debug("powerdomain: %s: setting next logic powerstate to %0x\n",
651 * pwrdm_set_mem_onst - set memory power state while powerdomain ON
652 * @pwrdm: struct powerdomain * to set
657 * powerdomain @pwrdm will enter when the powerdomain enters the ON
659 * types of memory, depending on the powerdomain. Returns -EINVAL if
660 * the powerdomain pointer is null or the target power state is not
665 int pwrdm_set_mem_onst(struct powerdomain *pwrdm, u8 bank, u8 pwrst)
678 pr_debug("powerdomain: %s: setting next memory powerstate for bank %0x while pwrdm-ON to %0x\n",
688 * pwrdm_set_mem_retst - set memory power state while powerdomain in RET
689 * @pwrdm: struct powerdomain * to set
694 * powerdomain @pwrdm will enter when the powerdomain enters the
696 * different types of memory, depending on the powerdomain. @pwrst
698 * the powerdomain pointer is null or the target power state is not
703 int pwrdm_set_mem_retst(struct powerdomain *pwrdm, u8 bank, u8 pwrst)
716 pr_debug("powerdomain: %s: setting next memory powerstate for bank %0x while pwrdm-RET to %0x\n",
726 * pwrdm_read_logic_pwrst - get current powerdomain logic retention power state
727 * @pwrdm: struct powerdomain * to get current logic retention power state
729 * Return the power state that the logic portion of powerdomain @pwrdm
730 * will enter when the powerdomain enters retention. Returns -EINVAL
731 * if the powerdomain pointer is null or returns the logic retention
734 int pwrdm_read_logic_pwrst(struct powerdomain *pwrdm)
748 * pwrdm_read_prev_logic_pwrst - get previous powerdomain logic power state
749 * @pwrdm: struct powerdomain * to get previous logic power state
751 * Return the powerdomain @pwrdm's previous logic power state. Returns
752 * -EINVAL if the powerdomain pointer is null or returns the previous
755 int pwrdm_read_prev_logic_pwrst(struct powerdomain *pwrdm)
769 * pwrdm_read_logic_retst - get next powerdomain logic power state
770 * @pwrdm: struct powerdomain * to get next logic power state
772 * Return the powerdomain pwrdm's logic power state. Returns -EINVAL
773 * if the powerdomain pointer is null or returns the next logic
776 int pwrdm_read_logic_retst(struct powerdomain *pwrdm)
791 * @pwrdm: struct powerdomain * to get current memory bank power state
794 * Return the powerdomain @pwrdm's current memory power state for bank
795 * @bank. Returns -EINVAL if the powerdomain pointer is null, -EEXIST if
799 int pwrdm_read_mem_pwrst(struct powerdomain *pwrdm, u8 bank)
820 * @pwrdm: struct powerdomain * to get previous memory bank power state
823 * Return the powerdomain @pwrdm's previous memory power state for
824 * bank @bank. Returns -EINVAL if the powerdomain pointer is null,
829 int pwrdm_read_prev_mem_pwrst(struct powerdomain *pwrdm, u8 bank)
850 * @pwrdm: struct powerdomain * to get mext memory bank power state
853 * Return the powerdomain pwrdm's next memory power state for bank
854 * x. Returns -EINVAL if the powerdomain pointer is null, -EEXIST if
858 int pwrdm_read_mem_retst(struct powerdomain *pwrdm, u8 bank)
876 * @pwrdm: struct powerdomain * to clear
878 * Clear the powerdomain's previous power state register @pwrdm.
880 * previous power states. Returns -EINVAL if the powerdomain pointer
883 int pwrdm_clear_all_prev_pwrst(struct powerdomain *pwrdm)
891 * XXX should get the powerdomain's current state here;
895 pr_debug("powerdomain: %s: clearing previous power state reg\n",
906 * @pwrdm: struct powerdomain *
909 * for some devices in the powerdomain @pwrdm. Warning: this only
910 * affects a subset of devices in a powerdomain; check the TRM
911 * closely. Returns -EINVAL if the powerdomain pointer is null or if
912 * the powerdomain does not support automatic save-and-restore, or
915 int pwrdm_enable_hdwr_sar(struct powerdomain *pwrdm)
925 pr_debug("powerdomain: %s: setting SAVEANDRESTORE bit\n", pwrdm->name);
935 * @pwrdm: struct powerdomain *
938 * for some devices in the powerdomain @pwrdm. Warning: this only
939 * affects a subset of devices in a powerdomain; check the TRM
940 * closely. Returns -EINVAL if the powerdomain pointer is null or if
941 * the powerdomain does not support automatic save-and-restore, or
944 int pwrdm_disable_hdwr_sar(struct powerdomain *pwrdm)
954 pr_debug("powerdomain: %s: clearing SAVEANDRESTORE bit\n", pwrdm->name);
963 * pwrdm_has_hdwr_sar - test whether powerdomain supports hardware SAR
964 * @pwrdm: struct powerdomain *
966 * Returns 1 if powerdomain @pwrdm supports hardware save-and-restore
969 bool pwrdm_has_hdwr_sar(struct powerdomain *pwrdm)
974 int pwrdm_state_switch_nolock(struct powerdomain *pwrdm)
988 int __deprecated pwrdm_state_switch(struct powerdomain *pwrdm)
999 int pwrdm_pre_transition(struct powerdomain *pwrdm)
1009 int pwrdm_post_transition(struct powerdomain *pwrdm)
1033 * a transition, however if the powerdomain does not actually support it,
1035 * available in our powerdomain data files. So this function tries to do
1042 u8 pwrdm_get_valid_lp_state(struct powerdomain *pwrdm,
1082 WARN(1, "powerdomain: %s: Fix max powerstate to ON\n",
1096 * omap_set_pwrdm_state - change a powerdomain's current power state
1097 * @pwrdm: struct powerdomain * to change the power state of
1100 * Change the current hardware power state of the powerdomain
1103 * powerdomain's current power state could not be read, or returns 0
1108 int omap_set_pwrdm_state(struct powerdomain *pwrdm, u8 pwrst)
1140 pr_err("%s: unable to set power state of powerdomain: %s\n",
1152 * pwrdm_save_context - save powerdomain registers
1155 * event. Save the powerdomain registers.
1157 static int pwrdm_save_context(struct powerdomain *pwrdm, void *unused)
1165 * pwrdm_save_context - restore powerdomain registers
1167 * Restore powerdomain control registers after a suspend or resume
1170 static int pwrdm_restore_context(struct powerdomain *pwrdm, void *unused)