diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2011-01-06 22:13:58 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2011-01-06 22:13:58 -0500 |
commit | 01539ba2a706ab7d35fc0667dff919ade7f87d63 (patch) | |
tree | 5a4bd0cf78007d06690fe4ac06bbd49a5a70bc47 /arch/arm/mach-omap2/smartreflex-class3.c | |
parent | 9e9bc9736756f25d6c47b4eba0ebf25b20a6f153 (diff) | |
parent | dc69d1af9e8d9cbbabff88bb35a6782187a22229 (diff) |
Merge branch 'omap-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap-2.6
* 'omap-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap-2.6: (243 commits)
omap2: Make OMAP2PLUS select OMAP_DM_TIMER
OMAP4: hwmod data: Fix alignment and end of line in structurefields
OMAP4: hwmod data: Move the DMA structures
OMAP4: hwmod data: Move the smartreflex structures
OMAP4: hwmod data: Fix missing SIDLE_SMART_WKUP in smartreflexsysc
arm: omap: tusb6010: add name for MUSB IRQ
arm: omap: craneboard: Add USB EHCI support
omap2+: Initialize serial port for dynamic remuxing for n8x0
omap2+: Add struct omap_board_data and use it for platform level serial init
omap2+: Allow hwmod state changes to mux pads based on the state changes
omap2+: Add support for hwmod specific muxing of devices
omap2+: Add omap_mux_get_by_name
OMAP2: PM: fix compile error when !CONFIG_SUSPEND
MAINTAINERS: OMAP: hwmod: update hwmod code, data maintainership
OMAP4: Smartreflex framework extensions
OMAP4: hwmod: Add inital data for smartreflex modules.
OMAP4: PM: Program correct init voltages for scalable VDDs
OMAP4: Adding voltage driver support
OMAP4: Register voltage PMIC parameters with the voltage layer
OMAP3: PM: Program correct init voltages for VDD1 and VDD2
...
Fix up trivial conflict in arch/arm/plat-omap/Kconfig
Diffstat (limited to 'arch/arm/mach-omap2/smartreflex-class3.c')
-rw-r--r-- | arch/arm/mach-omap2/smartreflex-class3.c | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/arch/arm/mach-omap2/smartreflex-class3.c b/arch/arm/mach-omap2/smartreflex-class3.c new file mode 100644 index 000000000000..60e70552b4c5 --- /dev/null +++ b/arch/arm/mach-omap2/smartreflex-class3.c | |||
@@ -0,0 +1,59 @@ | |||
1 | /* | ||
2 | * Smart reflex Class 3 specific implementations | ||
3 | * | ||
4 | * Author: Thara Gopinath <thara@ti.com> | ||
5 | * | ||
6 | * Copyright (C) 2010 Texas Instruments, Inc. | ||
7 | * Thara Gopinath <thara@ti.com> | ||
8 | * | ||
9 | * This program is free software; you can redistribute it and/or modify | ||
10 | * it under the terms of the GNU General Public License version 2 as | ||
11 | * published by the Free Software Foundation. | ||
12 | */ | ||
13 | |||
14 | #include <plat/smartreflex.h> | ||
15 | |||
16 | static int sr_class3_enable(struct voltagedomain *voltdm) | ||
17 | { | ||
18 | unsigned long volt = omap_voltage_get_nom_volt(voltdm); | ||
19 | |||
20 | if (!volt) { | ||
21 | pr_warning("%s: Curr voltage unknown. Cannot enable sr_%s\n", | ||
22 | __func__, voltdm->name); | ||
23 | return -ENODATA; | ||
24 | } | ||
25 | |||
26 | omap_vp_enable(voltdm); | ||
27 | return sr_enable(voltdm, volt); | ||
28 | } | ||
29 | |||
30 | static int sr_class3_disable(struct voltagedomain *voltdm, int is_volt_reset) | ||
31 | { | ||
32 | omap_vp_disable(voltdm); | ||
33 | sr_disable(voltdm); | ||
34 | if (is_volt_reset) | ||
35 | omap_voltage_reset(voltdm); | ||
36 | |||
37 | return 0; | ||
38 | } | ||
39 | |||
40 | static int sr_class3_configure(struct voltagedomain *voltdm) | ||
41 | { | ||
42 | return sr_configure_errgen(voltdm); | ||
43 | } | ||
44 | |||
45 | /* SR class3 structure */ | ||
46 | static struct omap_sr_class_data class3_data = { | ||
47 | .enable = sr_class3_enable, | ||
48 | .disable = sr_class3_disable, | ||
49 | .configure = sr_class3_configure, | ||
50 | .class_type = SR_CLASS3, | ||
51 | }; | ||
52 | |||
53 | /* Smartreflex Class3 init API to be called from board file */ | ||
54 | static int __init sr_class3_init(void) | ||
55 | { | ||
56 | pr_info("SmartReflex Class3 initialized\n"); | ||
57 | return sr_register_class(&class3_data); | ||
58 | } | ||
59 | late_initcall(sr_class3_init); | ||