Sometimes, there is a need to sequence the resume of different
drivers regardless of their registration. For example, for Tegra
platform, GPIO resume should be before the pinmux resume to avoid
glitch. On this, GPIO resume will configure the GPIO control
register before pins are enable after resume.
Add support to have the early_resume() callback which get called
before resume() so that respective driver's resume can be sequenced
over other drivers.
Bug
200298115
Change-Id: I794f6aea613a30cda8ba5decbf8ce62571c8e44b
Signed-off-by: Suresh Mangipudi <smangipudi@nvidia.com>
Reviewed-on: http://git-master/r/
1482937
(cherry picked from commit
73fa1fcde1982ea05f83b39f6d0281d8b10c968e)
Reviewed-on: http://git-master/r/
1487954
GVS: Gerrit_Virtual_Submit
Reviewed-by: Laxman Dewangan <ldewangan@nvidia.com>
WARN_ONCE(!irqs_disabled(),
"Interrupts enabled before system core resume.\n");
+ list_for_each_entry(ops, &syscore_ops_list, node)
+ if (ops->early_resume) {
+ if (initcall_debug)
+ pr_info("PM: Calling %pF\n", ops->early_resume);
+ ops->early_resume();
+ WARN_ONCE(!irqs_disabled(),
+ "Interrupts enabled after %pF\n",
+ ops->early_resume);
+ }
list_for_each_entry(ops, &syscore_ops_list, node)
if (ops->resume) {
if (initcall_debug)
struct list_head node;
int (*suspend)(void);
void (*resume)(void);
+ void (*early_resume)(void);
void (*shutdown)(void);
int (*save)(void);
void (*restore)(void);