-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
OMAP3: PM: Adding smartreflex class3 driver
Smartreflex Class3 implementation continuously monitors silicon performance and instructs the Voltage Processors to increase or decrease the voltage. This patch adds smartreflex class 3 driver. This driver hooks up with the generic smartreflex driver smartreflex.c to abstract out class specific implementations out of the generic driver. Class3 driver is chosen as the default class driver for smartreflex. If any other class driver needs to be implemented, the init of that driver should be called from the board file. That way the new class driver will over-ride the Class3 driver. Signed-off-by: Thara Gopinath <thara@ti.com> Signed-off-by: Kevin Hilman <khilman@deeprootsystems.com>
- Loading branch information
Thara Gopinath
authored and
Kevin Hilman
committed
Dec 22, 2010
1 parent
d344272
commit fa76582
Showing
3 changed files
with
69 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,59 @@ | ||
/* | ||
* Smart reflex Class 3 specific implementations | ||
* | ||
* Author: Thara Gopinath <thara@ti.com> | ||
* | ||
* Copyright (C) 2010 Texas Instruments, Inc. | ||
* Thara Gopinath <thara@ti.com> | ||
* | ||
* This program is free software; you can redistribute it and/or modify | ||
* it under the terms of the GNU General Public License version 2 as | ||
* published by the Free Software Foundation. | ||
*/ | ||
|
||
#include <plat/smartreflex.h> | ||
|
||
static int sr_class3_enable(struct voltagedomain *voltdm) | ||
{ | ||
unsigned long volt = omap_voltage_get_nom_volt(voltdm); | ||
|
||
if (!volt) { | ||
pr_warning("%s: Curr voltage unknown. Cannot enable sr_%s\n", | ||
__func__, voltdm->name); | ||
return -ENODATA; | ||
} | ||
|
||
omap_vp_enable(voltdm); | ||
return sr_enable(voltdm, volt); | ||
} | ||
|
||
static int sr_class3_disable(struct voltagedomain *voltdm, int is_volt_reset) | ||
{ | ||
omap_vp_disable(voltdm); | ||
sr_disable(voltdm); | ||
if (is_volt_reset) | ||
omap_voltage_reset(voltdm); | ||
|
||
return 0; | ||
} | ||
|
||
static int sr_class3_configure(struct voltagedomain *voltdm) | ||
{ | ||
return sr_configure_errgen(voltdm); | ||
} | ||
|
||
/* SR class3 structure */ | ||
static struct omap_sr_class_data class3_data = { | ||
.enable = sr_class3_enable, | ||
.disable = sr_class3_disable, | ||
.configure = sr_class3_configure, | ||
.class_type = SR_CLASS3, | ||
}; | ||
|
||
/* Smartreflex Class3 init API to be called from board file */ | ||
static int __init sr_class3_init(void) | ||
{ | ||
pr_info("SmartReflex Class3 initialized\n"); | ||
return sr_register_class(&class3_data); | ||
} | ||
late_initcall(sr_class3_init); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters