>>-----Original Message----- >>From: Kevin Hilman [mailto:khilman@xxxxxxxxxxxxxxxxxxx] >>Sent: Friday, October 15, 2010 4:39 AM >>To: Gopinath, Thara >>Cc: linux-omap@xxxxxxxxxxxxxxx; paul@xxxxxxxxx; Cousson, Benoit; Sripathy, >>Vishwanath; Sawant, Anand >>Subject: Re: [PATCH v3 06/11] OMAP3: PM: Adding smartreflex class3 driver >> >>Thara Gopinath <thara@xxxxxx> writes: >> >>> 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. >>> >>> Signed-off-by: Thara Gopinath <thara@xxxxxx> >> >>Some minor comments below... Thanks for the review! >> >>> --- >>> arch/arm/mach-omap2/Makefile | 1 + >>> arch/arm/mach-omap2/smartreflex-class3.c | 61 >>++++++++++++++++++++++++++++++ >>> arch/arm/mach-omap2/smartreflex-class3.h | 23 +++++++++++ >>> arch/arm/plat-omap/Kconfig | 9 ++++ >>> 4 files changed, 94 insertions(+), 0 deletions(-) >>> create mode 100644 arch/arm/mach-omap2/smartreflex-class3.c >>> create mode 100644 arch/arm/mach-omap2/smartreflex-class3.h >>> >>> diff --git a/arch/arm/mach-omap2/Makefile b/arch/arm/mach-omap2/Makefile >>> index abc377a..4f6139c 100644 >>> --- a/arch/arm/mach-omap2/Makefile >>> +++ b/arch/arm/mach-omap2/Makefile >>> @@ -57,6 +57,7 @@ obj-$(CONFIG_ARCH_OMAP3) += pm34xx.o sleep34xx.o >>voltage.o \ >>> obj-$(CONFIG_ARCH_OMAP4) += pm44xx.o pm_bus.o >>> obj-$(CONFIG_PM_DEBUG) += pm-debug.o >>> obj-$(CONFIG_OMAP_SMARTREFLEX) += sr_device.o smartreflex.o >>> +obj-$(CONFIG_OMAP_SMARTREFLEX_CLASS3) += smartreflex-class3.o >>> >>> AFLAGS_sleep24xx.o :=-Wa,-march=armv6 >>> AFLAGS_sleep34xx.o :=-Wa,-march=armv7-a >>> diff --git a/arch/arm/mach-omap2/smartreflex-class3.c b/arch/arm/mach- >>omap2/smartreflex-class3.c >>> new file mode 100644 >>> index 0000000..f1ade08 >>> --- /dev/null >>> +++ b/arch/arm/mach-omap2/smartreflex-class3.c >>> @@ -0,0 +1,61 @@ >>> +/* >>> + * Smart reflex Class 3 specific implementations >>> + * >>> + * Author: Thara Gopinath <thara@xxxxxx> >>> + * >>> + * Copyright (C) 2010 Texas Instruments, Inc. >>> + * Thara Gopinath <thara@xxxxxx> >>> + * >>> + * 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> >>> + >>> +#include "smartreflex-class3.h" >>> + >>> +static int sr_class3_enable(struct voltagedomain *voltdm) >>> +{ >>> + unsigned long volt = 0; >> >>minor: '= 0' assignment not needed as it's immediately assigned in the >>next line. Ok. >> >>> + 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_smartreflex_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 */ >> >>s/CLASS3/Class 3/ Will correct >> >>> +int __init sr_class3_init(void) >>> +{ >>> + pr_info("SmartReflex CLASS3 initialized\n"); >> >>ditto Will correct >> >>> + return sr_register_class(&class3_data); >>> +} >>> diff --git a/arch/arm/mach-omap2/smartreflex-class3.h b/arch/arm/mach- >>omap2/smartreflex-class3.h >>> new file mode 100644 >>> index 0000000..4d86037 >>> --- /dev/null >>> +++ b/arch/arm/mach-omap2/smartreflex-class3.h >>> @@ -0,0 +1,23 @@ >>> +/* >>> + * Smartreflex Class 3 Routines >>> + * >>> + * Author: Thara Gopinath <thara@xxxxxx> >>> + * >>> + * Copyright (C) 2010 Texas Instruments, Inc. >>> + * Thara Gopinath <thara@xxxxxx> >>> + * >>> + * 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. >>> + */ >>> + >>> +#ifndef __ARCH_ARM_MACH_OMAP2_SMARTREFLEXCLASS3_H >>> +#define __ARCH_ARM_MACH_OMAP2_SMARTREFLEXCLASS3_H >>> + >>> +#ifdef CONFIG_OMAP_SMARTREFLEX_CLASS3 >>> +int sr_class3_init(void); >>> +#else >>> +static int sr_class3_init(void) { return 0; } >>> +#endif >>> + >>> +#endif >>> diff --git a/arch/arm/plat-omap/Kconfig b/arch/arm/plat-omap/Kconfig >>> index 8056349..af7acc9 100644 >>> --- a/arch/arm/plat-omap/Kconfig >>> +++ b/arch/arm/plat-omap/Kconfig >>> @@ -67,6 +67,15 @@ config OMAP_SMARTREFLEX_TESTING >>> >>> WARNING: Enabling this option may cause your device to hang! >>> >>> +config OMAP_SMARTREFLEX_CLASS3 >>> + bool "Class 3 mode of Smartreflex Implementation" >>> + depends on OMAP_SMARTREFLEX && TWL4030_CORE >>> + help >>> + Say Y to enable Class 3 implementation of Smartreflex >>> + >>> + Class 3 implementation of Smartreflex employs continuous hardware >>> + voltage caliberation. >> >>calibration Will correct >> >>> + >>> config OMAP_RESET_CLOCKS >>> bool "Reset unused clocks during boot" >>> depends on ARCH_OMAP >> >>Kevin -- To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html