All of lore.kernel.org
 help / color / mirror / Atom feed
diff for duplicates of <87ipvttt3a.fsf@ti.com>

diff --git a/a/1.txt b/N1/1.txt
index a5e4ede..af3a03a 100644
--- a/a/1.txt
+++ b/N1/1.txt
@@ -10,7 +10,7 @@ Jean Pihet <jean.pihet@newoldbits.com> writes:
 >>> release the constraints.
 >>>
 >>> NOTE: only works for devices which have been converted to use
->>>       omap_device/omap_hwmod.
+>>> ? ? ? omap_device/omap_hwmod.
 >>>
 >>> Longer term, we could possibly remove this API from the OMAP PM layer,
 >>> and instead directly use the device level API.
@@ -31,7 +31,7 @@ Jean Pihet <jean.pihet@newoldbits.com> writes:
 >> started.
 >>
 >> Also, I had a problem doing a real dumb test until I figured out the
->> problem with the init sequence.  I tried setting a constraint in the
+>> problem with the init sequence. ?I tried setting a constraint in the
 >> device init code for UART (mach-omap2/serial.c:omap_serial_init_port()),
 >> and then I realized that that runs before
 >> mach-omap2/pm34xx.c:pwrdms_setup() which also calls
@@ -47,9 +47,9 @@ cannot be used before pwrdms_setup().  But since that happens much later
 in the boot process than device init code, that might be too strict.
 
 >> Also, for debug purposes, it might be useful to have a per-device sysfs
->> interface to setting this wakeup latency constraint.  Something like
+>> interface to setting this wakeup latency constraint. ?Something like
 >>
->>   /sys/devices/platform/omap/.../power/wakeup_latency
+>> ? /sys/devices/platform/omap/.../power/wakeup_latency
 > I do not see this as a debug interface but rather an API to the user space.
 > If that is the case there are some issues to deal with, cf. below.
 
@@ -65,14 +65,14 @@ A dummy device could be created for all sysfs requesters since you would
 want subsequent writes to override  previous ones.
 
 >> As far as implementation goes, you've so far implemented only wakeup
->> latencies, but not througput.  When you implement throughput you will
+>> latencies, but not througput. ?When you implement throughput you will
 >> have to duplicate large parts of this code and data structures for
 >> throughput, and if ever add some other constraint (frequency, voltage)
 >> it would need to be duplicated again.
 >>
 >> Maybe now is the time to consider an interface to add a generic
 >> per-device constraint, with a type (latency, throughput, etc.), or
->> "class" as it's called in PM QoS.  For now the type/class does not need
+>> "class" as it's called in PM QoS. ?For now the type/class does not need
 >> to be exposed externally, but will make implementing new constraint
 >> types much easer.
 > Ok that makes sense.
@@ -92,32 +92,32 @@ constraint plist managed for each class of constraint.
 >>> ---
 >>> Based on khilman's pm-core branch
 >>>
->>>  arch/arm/mach-omap2/omap_hwmod.c              |   62 ++++++++-
->>>  arch/arm/mach-omap2/powerdomain.c             |  197 +++++++++++++++++++++++++
->>>  arch/arm/mach-omap2/powerdomain.h             |   39 +++++-
->>>  arch/arm/mach-omap2/powerdomains3xxx_data.c   |   60 ++++++++
->>>  arch/arm/plat-omap/include/plat/omap_device.h |    2 +
->>>  arch/arm/plat-omap/include/plat/omap_hwmod.h  |    2 +
->>>  arch/arm/plat-omap/omap-pm-constraints.c      |  121 +++++++--------
->>>  arch/arm/plat-omap/omap_device.c              |   28 ++++
->>>  8 files changed, 446 insertions(+), 65 deletions(-)
+>>> ?arch/arm/mach-omap2/omap_hwmod.c ? ? ? ? ? ? ?| ? 62 ++++++++-
+>>> ?arch/arm/mach-omap2/powerdomain.c ? ? ? ? ? ? | ?197 +++++++++++++++++++++++++
+>>> ?arch/arm/mach-omap2/powerdomain.h ? ? ? ? ? ? | ? 39 +++++-
+>>> ?arch/arm/mach-omap2/powerdomains3xxx_data.c ? | ? 60 ++++++++
+>>> ?arch/arm/plat-omap/include/plat/omap_device.h | ? ?2 +
+>>> ?arch/arm/plat-omap/include/plat/omap_hwmod.h ?| ? ?2 +
+>>> ?arch/arm/plat-omap/omap-pm-constraints.c ? ? ?| ?121 +++++++--------
+>>> ?arch/arm/plat-omap/omap_device.c ? ? ? ? ? ? ?| ? 28 ++++
+>>> ?8 files changed, 446 insertions(+), 65 deletions(-)
 >>>
 >>> diff --git a/arch/arm/mach-omap2/omap_hwmod.c b/arch/arm/mach-omap2/omap_hwmod.c
 >>> index 028efda..bad8248 100644
 >>> --- a/arch/arm/mach-omap2/omap_hwmod.c
 >>> +++ b/arch/arm/mach-omap2/omap_hwmod.c
 >>> @@ -142,6 +142,7 @@
->>>  #include "powerdomain.h"
->>>  #include <plat/clock.h>
->>>  #include <plat/omap_hwmod.h>
+>>> ?#include "powerdomain.h"
+>>> ?#include <plat/clock.h>
+>>> ?#include <plat/omap_hwmod.h>
 >>> +#include <plat/omap_device.h>
->>>  #include <plat/prcm.h>
+>>> ?#include <plat/prcm.h>
 >>>
->>>  #include "cm2xxx_3xxx.h"
+>>> ?#include "cm2xxx_3xxx.h"
 >>> @@ -2267,10 +2268,69 @@ ohsps_unlock:
->>>  }
+>>> ?}
 >>>
->>>  /**
+>>> ?/**
 >>> + * omap_hwmod_set_max_dev_wakeup_lat - set a device wake-up constraint
 >>> + * @oh: the device of @oh to set a constraint on.
 >>> + * @req_oh: the device of @req_oh is the requester of the constraint.
@@ -133,88 +133,88 @@ constraint plist managed for each class of constraint.
 >>> + * of the powerdomain assocated with @oh.
 >>> + */
 >>> +int omap_hwmod_set_max_dev_wakeup_lat(struct omap_hwmod *req_oh,
->>> +                                   struct omap_hwmod *oh, long t)
+>>> + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? struct omap_hwmod *oh, long t)
 >>> +{
->>> +     struct device *req_dev;
->>> +     struct platform_device *req_pdev;
->>> +     struct powerdomain *pwrdm;
+>>> + ? ? struct device *req_dev;
+>>> + ? ? struct platform_device *req_pdev;
+>>> + ? ? struct powerdomain *pwrdm;
 >>> +
->>> +     pwrdm = omap_hwmod_get_pwrdm(oh);
+>>> + ? ? pwrdm = omap_hwmod_get_pwrdm(oh);
 >>> +
->>> +     /* Catch devices with undefined powerdomains */
->>> +     if (!PTR_ERR(pwrdm)) {
->>> +             pr_err("omap_hwmod: Error: could not find parent "
->>> +                     "powerdomain for %s\n", oh->name);
->>> +             return -EINVAL;
->>> +     }
+>>> + ? ? /* Catch devices with undefined powerdomains */
+>>> + ? ? if (!PTR_ERR(pwrdm)) {
+>>> + ? ? ? ? ? ? pr_err("omap_hwmod: Error: could not find parent "
+>>> + ? ? ? ? ? ? ? ? ? ? "powerdomain for %s\n", oh->name);
+>>> + ? ? ? ? ? ? return -EINVAL;
+>>> + ? ? }
 >>> +
->>> +     req_pdev = &(req_oh->od->pdev);
->>> +     if (!PTR_ERR(req_pdev)) {
->>> +             pr_err("omap_hwmod: Error: pdev not found for oh %s\n",
->>> +                    oh->name);
->>> +             return -EINVAL;
->>> +     }
+>>> + ? ? req_pdev = &(req_oh->od->pdev);
+>>> + ? ? if (!PTR_ERR(req_pdev)) {
+>>> + ? ? ? ? ? ? pr_err("omap_hwmod: Error: pdev not found for oh %s\n",
+>>> + ? ? ? ? ? ? ? ? ? ?oh->name);
+>>> + ? ? ? ? ? ? return -EINVAL;
+>>> + ? ? }
 >>> +
->>> +     req_dev = &(req_pdev->dev);
->>> +     if (!PTR_ERR(req_dev)) {
->>> +             pr_err("omap_hwmod: Error: device not found for oh %s\n",
->>> +                    oh->name);
->>> +             return -EINVAL;
->>> +     }
+>>> + ? ? req_dev = &(req_pdev->dev);
+>>> + ? ? if (!PTR_ERR(req_dev)) {
+>>> + ? ? ? ? ? ? pr_err("omap_hwmod: Error: device not found for oh %s\n",
+>>> + ? ? ? ? ? ? ? ? ? ?oh->name);
+>>> + ? ? ? ? ? ? return -EINVAL;
+>>> + ? ? }
 >>> +
->>> +     /* Call set/release_constraint for the given pwrdm */
->>> +     if (t == -1) {
->>> +             pr_debug("omap_hwmod: remove max device latency constraint: "
->>> +                      "oh %s, pwrdm %s, req by oh %s\n",
->>> +                      oh->name, pwrdm->name, req_oh->name);
->>> +     } else {
->>> +             pr_debug("omap_hwmod: add max device latency constraint: "
->>> +                      "oh %s, t = %ld usec, pwrdm %s, req by oh %s\n",
->>> +                      oh->name, t, pwrdm->name, req_oh->name);
->>> +     }
+>>> + ? ? /* Call set/release_constraint for the given pwrdm */
+>>> + ? ? if (t == -1) {
+>>> + ? ? ? ? ? ? pr_debug("omap_hwmod: remove max device latency constraint: "
+>>> + ? ? ? ? ? ? ? ? ? ? ?"oh %s, pwrdm %s, req by oh %s\n",
+>>> + ? ? ? ? ? ? ? ? ? ? ?oh->name, pwrdm->name, req_oh->name);
+>>> + ? ? } else {
+>>> + ? ? ? ? ? ? pr_debug("omap_hwmod: add max device latency constraint: "
+>>> + ? ? ? ? ? ? ? ? ? ? ?"oh %s, t = %ld usec, pwrdm %s, req by oh %s\n",
+>>> + ? ? ? ? ? ? ? ? ? ? ?oh->name, t, pwrdm->name, req_oh->name);
+>>> + ? ? }
 >>> +
->>> +     return pwrdm_wakeuplat_set_constraint(pwrdm, req_dev, t);
+>>> + ? ? return pwrdm_wakeuplat_set_constraint(pwrdm, req_dev, t);
 >>> +}
 >>> +
 >>> +/**
->>>   * omap_hwmod_get_context_loss_count - get lost context count
->>>   * @oh: struct omap_hwmod *
->>>   *
+>>> ? * omap_hwmod_get_context_loss_count - get lost context count
+>>> ? * @oh: struct omap_hwmod *
+>>> ? *
 >>> - * Query the powerdomain of of @oh to get the context loss
 >>> + * Query the powerdomain of @oh to get the context loss
->>>   * count for this device.
->>>   *
->>>   * Returns the context loss count of the powerdomain assocated with @oh
+>>> ? * count for this device.
+>>> ? *
+>>> ? * Returns the context loss count of the powerdomain assocated with @oh
 >>> diff --git a/arch/arm/mach-omap2/powerdomain.c b/arch/arm/mach-omap2/powerdomain.c
 >>> index eaed0df..6fb4741 100644
 >>> --- a/arch/arm/mach-omap2/powerdomain.c
 >>> +++ b/arch/arm/mach-omap2/powerdomain.c
 >>> @@ -19,6 +19,8 @@
->>>  #include <linux/list.h>
->>>  #include <linux/errno.h>
->>>  #include <linux/string.h>
+>>> ?#include <linux/list.h>
+>>> ?#include <linux/errno.h>
+>>> ?#include <linux/string.h>
 >>> +#include <linux/slab.h>
 >>> +
->>>  #include "cm2xxx_3xxx.h"
->>>  #include "prcm44xx.h"
->>>  #include "cm44xx.h"
+>>> ?#include "cm2xxx_3xxx.h"
+>>> ?#include "prcm44xx.h"
+>>> ?#include "cm44xx.h"
 >>> @@ -103,6 +105,13 @@ static int _pwrdm_register(struct powerdomain *pwrdm)
->>>       pwrdm->state = pwrdm_read_pwrst(pwrdm);
->>>       pwrdm->state_counter[pwrdm->state] = 1;
+>>> ? ? ? pwrdm->state = pwrdm_read_pwrst(pwrdm);
+>>> ? ? ? pwrdm->state_counter[pwrdm->state] = 1;
 >>>
->>> +     /* Initialize priority ordered list for wakeup latency constraint */
->>> +     spin_lock_init(&pwrdm->wakeuplat_lock);
->>> +     plist_head_init(&pwrdm->wakeuplat_dev_list, &pwrdm->wakeuplat_lock);
+>>> + ? ? /* Initialize priority ordered list for wakeup latency constraint */
+>>> + ? ? spin_lock_init(&pwrdm->wakeuplat_lock);
+>>> + ? ? plist_head_init(&pwrdm->wakeuplat_dev_list, &pwrdm->wakeuplat_lock);
 >>> +
->>> +     /* res_mutex protects res_list add and del ops */
->>> +     mutex_init(&pwrdm->wakeuplat_mutex);
+>>> + ? ? /* res_mutex protects res_list add and del ops */
+>>> + ? ? mutex_init(&pwrdm->wakeuplat_mutex);
 >>> +
->>>       pr_debug("powerdomain: registered %s\n", pwrdm->name);
+>>> ? ? ? pr_debug("powerdomain: registered %s\n", pwrdm->name);
 >>>
->>>       return 0;
+>>> ? ? ? return 0;
 >>> @@ -176,6 +185,74 @@ static int _pwrdm_post_transition_cb(struct powerdomain *pwrdm, void *unused)
->>>       return 0;
->>>  }
+>>> ? ? ? return 0;
+>>> ?}
 >>>
 >>> +/**
 >>> + * pwrdm_wakeuplat_update_pwrst - Update power domain power state if needed
@@ -230,30 +230,30 @@ constraint plist managed for each class of constraint.
 >>> + */
 >>> +static int pwrdm_wakeuplat_update_pwrst(struct powerdomain *pwrdm)
 >>> +{
->>> +     struct plist_node *node;
->>> +     int ret = 0, new_state;
->>> +     long min_latency = -1;
+>>> + ? ? struct plist_node *node;
+>>> + ? ? int ret = 0, new_state;
+>>> + ? ? long min_latency = -1;
 >>> +
->>> +     /* Find the strongest constraint from the plist */
->>> +     if (!plist_head_empty(&pwrdm->wakeuplat_dev_list)) {
->>> +             node = plist_first(&pwrdm->wakeuplat_dev_list);
->>> +             min_latency = node->prio;
->>> +     }
+>>> + ? ? /* Find the strongest constraint from the plist */
+>>> + ? ? if (!plist_head_empty(&pwrdm->wakeuplat_dev_list)) {
+>>> + ? ? ? ? ? ? node = plist_first(&pwrdm->wakeuplat_dev_list);
+>>> + ? ? ? ? ? ? min_latency = node->prio;
+>>> + ? ? }
 >>> +
->>> +     /* Find power state with wakeup latency < minimum constraint. */
->>> +     for (new_state = 0x0; new_state < PWRDM_MAX_PWRSTS; new_state++) {
->>> +             if (min_latency == -1 ||
->>> +                 pwrdm->wakeup_lat[new_state] <= min_latency)
->>> +                     break;
->>> +     }
+>>> + ? ? /* Find power state with wakeup latency < minimum constraint. */
+>>> + ? ? for (new_state = 0x0; new_state < PWRDM_MAX_PWRSTS; new_state++) {
+>>> + ? ? ? ? ? ? if (min_latency == -1 ||
+>>> + ? ? ? ? ? ? ? ? pwrdm->wakeup_lat[new_state] <= min_latency)
+>>> + ? ? ? ? ? ? ? ? ? ? break;
+>>> + ? ? }
 >>> +
->>> +     switch (new_state) {
->>> +     case PWRDM_FUNC_PWRST_OFF:
->>> +             new_state = PWRDM_POWER_OFF;
->>> +             break;
->>> +     case PWRDM_FUNC_PWRST_OSWR:
->>> +             if (cpu_is_omap34xx())
->>> +                     pwrdm_set_logic_retst(pwrdm, PWRDM_POWER_OFF);
+>>> + ? ? switch (new_state) {
+>>> + ? ? case PWRDM_FUNC_PWRST_OFF:
+>>> + ? ? ? ? ? ? new_state = PWRDM_POWER_OFF;
+>>> + ? ? ? ? ? ? break;
+>>> + ? ? case PWRDM_FUNC_PWRST_OSWR:
+>>> + ? ? ? ? ? ? if (cpu_is_omap34xx())
+>>> + ? ? ? ? ? ? ? ? ? ? pwrdm_set_logic_retst(pwrdm, PWRDM_POWER_OFF);
 >>
 >> cpu_is_* checks here aren't right.
 >>
@@ -272,34 +272,34 @@ Right, I think you can just drop the cpu_is_* checks here since as you
 pointed out, the called functions already handle SoC specifics.
 
 >>
->>> +             new_state = PWRDM_POWER_RET;
->>> +             break;
->>> +     case PWRDM_FUNC_PWRST_CSWR:
->>> +             if (cpu_is_omap34xx())
->>> +                     pwrdm_set_logic_retst(pwrdm, PWRDM_POWER_RET);
->>> +             new_state = PWRDM_POWER_RET;
->>> +             break;
->>> +     case PWRDM_FUNC_PWRST_ON:
->>> +             new_state = PWRDM_POWER_ON;
->>> +             break;
->>> +     default:
->>> +             pr_warn("powerdomain: requested latency constraint not "
->>> +                     "supported %s set to ON state\n", pwrdm->name);
->>> +             new_state = PWRDM_POWER_ON;
->>> +             break;
->>> +     }
+>>> + ? ? ? ? ? ? new_state = PWRDM_POWER_RET;
+>>> + ? ? ? ? ? ? break;
+>>> + ? ? case PWRDM_FUNC_PWRST_CSWR:
+>>> + ? ? ? ? ? ? if (cpu_is_omap34xx())
+>>> + ? ? ? ? ? ? ? ? ? ? pwrdm_set_logic_retst(pwrdm, PWRDM_POWER_RET);
+>>> + ? ? ? ? ? ? new_state = PWRDM_POWER_RET;
+>>> + ? ? ? ? ? ? break;
+>>> + ? ? case PWRDM_FUNC_PWRST_ON:
+>>> + ? ? ? ? ? ? new_state = PWRDM_POWER_ON;
+>>> + ? ? ? ? ? ? break;
+>>> + ? ? default:
+>>> + ? ? ? ? ? ? pr_warn("powerdomain: requested latency constraint not "
+>>> + ? ? ? ? ? ? ? ? ? ? "supported %s set to ON state\n", pwrdm->name);
+>>> + ? ? ? ? ? ? new_state = PWRDM_POWER_ON;
+>>> + ? ? ? ? ? ? break;
+>>> + ? ? }
 >>> +
->>> +     if (pwrdm_read_pwrst(pwrdm) != new_state) {
->>> +             if (cpu_is_omap34xx())
->>> +                     ret = omap_set_pwrdm_state(pwrdm, new_state);
->>> +     }
+>>> + ? ? if (pwrdm_read_pwrst(pwrdm) != new_state) {
+>>> + ? ? ? ? ? ? if (cpu_is_omap34xx())
+>>> + ? ? ? ? ? ? ? ? ? ? ret = omap_set_pwrdm_state(pwrdm, new_state);
+>>> + ? ? }
 >>> +
->>> +     pr_debug("powerdomain: %s pwrst: curr=%d, prev=%d next=%d "
->>> +              "min_latency=%ld, set_state=%d\n", pwrdm->name,
->>> +              pwrdm_read_pwrst(pwrdm), pwrdm_read_prev_pwrst(pwrdm),
->>> +              pwrdm_read_next_pwrst(pwrdm), min_latency, new_state);
+>>> + ? ? pr_debug("powerdomain: %s pwrst: curr=%d, prev=%d next=%d "
+>>> + ? ? ? ? ? ? ?"min_latency=%ld, set_state=%d\n", pwrdm->name,
+>>> + ? ? ? ? ? ? ?pwrdm_read_pwrst(pwrdm), pwrdm_read_prev_pwrst(pwrdm),
+>>> + ? ? ? ? ? ? ?pwrdm_read_next_pwrst(pwrdm), min_latency, new_state);
 >>> +
->>> +     return ret;
+>>> + ? ? return ret;
 >>> +}
 >>> +
 >>
@@ -310,133 +310,133 @@ pointed out, the called functions already handle SoC specifics.
 >>> --- a/arch/arm/mach-omap2/powerdomains3xxx_data.c
 >>> +++ b/arch/arm/mach-omap2/powerdomains3xxx_data.c
 >>> @@ -52,6 +52,12 @@ static struct powerdomain iva2_pwrdm = {
->>>               [2] = PWRSTS_OFF_ON,
->>>               [3] = PWRDM_POWER_ON,
->>>       },
->>> +     .wakeup_lat = {
->>> +             [PWRDM_FUNC_PWRST_OFF] = 1100,
->>> +             [PWRDM_FUNC_PWRST_OSWR] = UNSUP_STATE,
->>> +             [PWRDM_FUNC_PWRST_CSWR] = 350,
->>> +             [PWRDM_FUNC_PWRST_ON] = 0,
->>> +     },
->>>  };
+>>> ? ? ? ? ? ? ? [2] = PWRSTS_OFF_ON,
+>>> ? ? ? ? ? ? ? [3] = PWRDM_POWER_ON,
+>>> ? ? ? },
+>>> + ? ? .wakeup_lat = {
+>>> + ? ? ? ? ? ? [PWRDM_FUNC_PWRST_OFF] = 1100,
+>>> + ? ? ? ? ? ? [PWRDM_FUNC_PWRST_OSWR] = UNSUP_STATE,
+>>> + ? ? ? ? ? ? [PWRDM_FUNC_PWRST_CSWR] = 350,
+>>> + ? ? ? ? ? ? [PWRDM_FUNC_PWRST_ON] = 0,
+>>> + ? ? },
+>>> ?};
 >>>
->>>  static struct powerdomain mpu_3xxx_pwrdm = {
+>>> ?static struct powerdomain mpu_3xxx_pwrdm = {
 >>> @@ -68,6 +74,12 @@ static struct powerdomain mpu_3xxx_pwrdm = {
->>>       .pwrsts_mem_on    = {
->>>               [0] = PWRSTS_OFF_ON,
->>>       },
->>> +     .wakeup_lat = {
->>> +             [PWRDM_FUNC_PWRST_OFF] = 95,
->>> +             [PWRDM_FUNC_PWRST_OSWR] = UNSUP_STATE,
->>> +             [PWRDM_FUNC_PWRST_CSWR] = 45,
->>> +             [PWRDM_FUNC_PWRST_ON] = 0,
->>> +     },
->>>  };
+>>> ? ? ? .pwrsts_mem_on ? ?= {
+>>> ? ? ? ? ? ? ? [0] = PWRSTS_OFF_ON,
+>>> ? ? ? },
+>>> + ? ? .wakeup_lat = {
+>>> + ? ? ? ? ? ? [PWRDM_FUNC_PWRST_OFF] = 95,
+>>> + ? ? ? ? ? ? [PWRDM_FUNC_PWRST_OSWR] = UNSUP_STATE,
+>>> + ? ? ? ? ? ? [PWRDM_FUNC_PWRST_CSWR] = 45,
+>>> + ? ? ? ? ? ? [PWRDM_FUNC_PWRST_ON] = 0,
+>>> + ? ? },
+>>> ?};
 >>>
->>>  /*
+>>> ?/*
 >>> @@ -98,6 +110,12 @@ static struct powerdomain core_3xxx_pre_es3_1_pwrdm = {
->>>               [0] = PWRSTS_OFF_RET_ON, /* MEM1ONSTATE */
->>>               [1] = PWRSTS_OFF_RET_ON, /* MEM2ONSTATE */
->>>       },
->>> +     .wakeup_lat = {
->>> +             [PWRDM_FUNC_PWRST_OFF] = 100,
->>> +             [PWRDM_FUNC_PWRST_OSWR] = UNSUP_STATE,
->>> +             [PWRDM_FUNC_PWRST_CSWR] = 60,
->>> +             [PWRDM_FUNC_PWRST_ON] = 0,
->>> +     },
->>>  };
+>>> ? ? ? ? ? ? ? [0] = PWRSTS_OFF_RET_ON, /* MEM1ONSTATE */
+>>> ? ? ? ? ? ? ? [1] = PWRSTS_OFF_RET_ON, /* MEM2ONSTATE */
+>>> ? ? ? },
+>>> + ? ? .wakeup_lat = {
+>>> + ? ? ? ? ? ? [PWRDM_FUNC_PWRST_OFF] = 100,
+>>> + ? ? ? ? ? ? [PWRDM_FUNC_PWRST_OSWR] = UNSUP_STATE,
+>>> + ? ? ? ? ? ? [PWRDM_FUNC_PWRST_CSWR] = 60,
+>>> + ? ? ? ? ? ? [PWRDM_FUNC_PWRST_ON] = 0,
+>>> + ? ? },
+>>> ?};
 >>>
->>>  static struct powerdomain core_3xxx_es3_1_pwrdm = {
+>>> ?static struct powerdomain core_3xxx_es3_1_pwrdm = {
 >>> @@ -121,6 +139,12 @@ static struct powerdomain core_3xxx_es3_1_pwrdm = {
->>>               [0] = PWRSTS_OFF_RET_ON, /* MEM1ONSTATE */
->>>               [1] = PWRSTS_OFF_RET_ON, /* MEM2ONSTATE */
->>>       },
->>> +     .wakeup_lat = {
->>> +             [PWRDM_FUNC_PWRST_OFF] = 100,
->>> +             [PWRDM_FUNC_PWRST_OSWR] = UNSUP_STATE,
->>> +             [PWRDM_FUNC_PWRST_CSWR] = 60,
->>> +             [PWRDM_FUNC_PWRST_ON] = 0,
->>> +     },
->>>  };
+>>> ? ? ? ? ? ? ? [0] = PWRSTS_OFF_RET_ON, /* MEM1ONSTATE */
+>>> ? ? ? ? ? ? ? [1] = PWRSTS_OFF_RET_ON, /* MEM2ONSTATE */
+>>> ? ? ? },
+>>> + ? ? .wakeup_lat = {
+>>> + ? ? ? ? ? ? [PWRDM_FUNC_PWRST_OFF] = 100,
+>>> + ? ? ? ? ? ? [PWRDM_FUNC_PWRST_OSWR] = UNSUP_STATE,
+>>> + ? ? ? ? ? ? [PWRDM_FUNC_PWRST_CSWR] = 60,
+>>> + ? ? ? ? ? ? [PWRDM_FUNC_PWRST_ON] = 0,
+>>> + ? ? },
+>>> ?};
 >>>
->>>  static struct powerdomain dss_pwrdm = {
+>>> ?static struct powerdomain dss_pwrdm = {
 >>> @@ -136,6 +160,12 @@ static struct powerdomain dss_pwrdm = {
->>>       .pwrsts_mem_on    = {
->>>               [0] = PWRDM_POWER_ON,  /* MEMONSTATE */
->>>       },
->>> +     .wakeup_lat = {
->>> +             [PWRDM_FUNC_PWRST_OFF] = 70,
->>> +             [PWRDM_FUNC_PWRST_OSWR] = UNSUP_STATE,
->>> +             [PWRDM_FUNC_PWRST_CSWR] = 20,
->>> +             [PWRDM_FUNC_PWRST_ON] = 0,
->>> +     },
->>>  };
+>>> ? ? ? .pwrsts_mem_on ? ?= {
+>>> ? ? ? ? ? ? ? [0] = PWRDM_POWER_ON, ?/* MEMONSTATE */
+>>> ? ? ? },
+>>> + ? ? .wakeup_lat = {
+>>> + ? ? ? ? ? ? [PWRDM_FUNC_PWRST_OFF] = 70,
+>>> + ? ? ? ? ? ? [PWRDM_FUNC_PWRST_OSWR] = UNSUP_STATE,
+>>> + ? ? ? ? ? ? [PWRDM_FUNC_PWRST_CSWR] = 20,
+>>> + ? ? ? ? ? ? [PWRDM_FUNC_PWRST_ON] = 0,
+>>> + ? ? },
+>>> ?};
 >>>
->>>  /*
+>>> ?/*
 >>> @@ -157,6 +187,12 @@ static struct powerdomain sgx_pwrdm = {
->>>       .pwrsts_mem_on    = {
->>>               [0] = PWRDM_POWER_ON,  /* MEMONSTATE */
->>>       },
->>> +     .wakeup_lat = {
->>> +             [PWRDM_FUNC_PWRST_OFF] = 1000,
->>> +             [PWRDM_FUNC_PWRST_OSWR] = UNSUP_STATE,
->>> +             [PWRDM_FUNC_PWRST_CSWR] = UNSUP_STATE,
->>> +             [PWRDM_FUNC_PWRST_ON] = 0,
->>> +     },
->>>  };
+>>> ? ? ? .pwrsts_mem_on ? ?= {
+>>> ? ? ? ? ? ? ? [0] = PWRDM_POWER_ON, ?/* MEMONSTATE */
+>>> ? ? ? },
+>>> + ? ? .wakeup_lat = {
+>>> + ? ? ? ? ? ? [PWRDM_FUNC_PWRST_OFF] = 1000,
+>>> + ? ? ? ? ? ? [PWRDM_FUNC_PWRST_OSWR] = UNSUP_STATE,
+>>> + ? ? ? ? ? ? [PWRDM_FUNC_PWRST_CSWR] = UNSUP_STATE,
+>>> + ? ? ? ? ? ? [PWRDM_FUNC_PWRST_ON] = 0,
+>>> + ? ? },
+>>> ?};
 >>>
->>>  static struct powerdomain cam_pwrdm = {
+>>> ?static struct powerdomain cam_pwrdm = {
 >>> @@ -172,6 +208,12 @@ static struct powerdomain cam_pwrdm = {
->>>       .pwrsts_mem_on    = {
->>>               [0] = PWRDM_POWER_ON,  /* MEMONSTATE */
->>>       },
->>> +     .wakeup_lat = {
->>> +             [PWRDM_FUNC_PWRST_OFF] = 850,
->>> +             [PWRDM_FUNC_PWRST_OSWR] = UNSUP_STATE,
->>> +             [PWRDM_FUNC_PWRST_CSWR] = 35,
->>> +             [PWRDM_FUNC_PWRST_ON] = 0,
->>> +     },
->>>  };
+>>> ? ? ? .pwrsts_mem_on ? ?= {
+>>> ? ? ? ? ? ? ? [0] = PWRDM_POWER_ON, ?/* MEMONSTATE */
+>>> ? ? ? },
+>>> + ? ? .wakeup_lat = {
+>>> + ? ? ? ? ? ? [PWRDM_FUNC_PWRST_OFF] = 850,
+>>> + ? ? ? ? ? ? [PWRDM_FUNC_PWRST_OSWR] = UNSUP_STATE,
+>>> + ? ? ? ? ? ? [PWRDM_FUNC_PWRST_CSWR] = 35,
+>>> + ? ? ? ? ? ? [PWRDM_FUNC_PWRST_ON] = 0,
+>>> + ? ? },
+>>> ?};
 >>>
->>>  static struct powerdomain per_pwrdm = {
+>>> ?static struct powerdomain per_pwrdm = {
 >>> @@ -187,6 +229,12 @@ static struct powerdomain per_pwrdm = {
->>>       .pwrsts_mem_on    = {
->>>               [0] = PWRDM_POWER_ON,  /* MEMONSTATE */
->>>       },
->>> +     .wakeup_lat = {
->>> +             [PWRDM_FUNC_PWRST_OFF] = 200,
->>> +             [PWRDM_FUNC_PWRST_OSWR] = UNSUP_STATE,
->>> +             [PWRDM_FUNC_PWRST_CSWR] = 110,
->>> +             [PWRDM_FUNC_PWRST_ON] = 0,
->>> +     },
->>>  };
+>>> ? ? ? .pwrsts_mem_on ? ?= {
+>>> ? ? ? ? ? ? ? [0] = PWRDM_POWER_ON, ?/* MEMONSTATE */
+>>> ? ? ? },
+>>> + ? ? .wakeup_lat = {
+>>> + ? ? ? ? ? ? [PWRDM_FUNC_PWRST_OFF] = 200,
+>>> + ? ? ? ? ? ? [PWRDM_FUNC_PWRST_OSWR] = UNSUP_STATE,
+>>> + ? ? ? ? ? ? [PWRDM_FUNC_PWRST_CSWR] = 110,
+>>> + ? ? ? ? ? ? [PWRDM_FUNC_PWRST_ON] = 0,
+>>> + ? ? },
+>>> ?};
 >>>
->>>  static struct powerdomain emu_pwrdm = {
+>>> ?static struct powerdomain emu_pwrdm = {
 >>> @@ -201,6 +249,12 @@ static struct powerdomain neon_pwrdm = {
->>>       .omap_chip        = OMAP_CHIP_INIT(CHIP_IS_OMAP3430),
->>>       .pwrsts           = PWRSTS_OFF_RET_ON,
->>>       .pwrsts_logic_ret = PWRDM_POWER_RET,
->>> +     .wakeup_lat = {
->>> +             [PWRDM_FUNC_PWRST_OFF] = 200,
->>> +             [PWRDM_FUNC_PWRST_OSWR] = UNSUP_STATE,
->>> +             [PWRDM_FUNC_PWRST_CSWR] = 35,
->>> +             [PWRDM_FUNC_PWRST_ON] = 0,
->>> +     },
->>>  };
+>>> ? ? ? .omap_chip ? ? ? ?= OMAP_CHIP_INIT(CHIP_IS_OMAP3430),
+>>> ? ? ? .pwrsts ? ? ? ? ? = PWRSTS_OFF_RET_ON,
+>>> ? ? ? .pwrsts_logic_ret = PWRDM_POWER_RET,
+>>> + ? ? .wakeup_lat = {
+>>> + ? ? ? ? ? ? [PWRDM_FUNC_PWRST_OFF] = 200,
+>>> + ? ? ? ? ? ? [PWRDM_FUNC_PWRST_OSWR] = UNSUP_STATE,
+>>> + ? ? ? ? ? ? [PWRDM_FUNC_PWRST_CSWR] = 35,
+>>> + ? ? ? ? ? ? [PWRDM_FUNC_PWRST_ON] = 0,
+>>> + ? ? },
+>>> ?};
 >>>
->>>  static struct powerdomain usbhost_pwrdm = {
+>>> ?static struct powerdomain usbhost_pwrdm = {
 >>> @@ -223,6 +277,12 @@ static struct powerdomain usbhost_pwrdm = {
->>>       .pwrsts_mem_on    = {
->>>               [0] = PWRDM_POWER_ON,  /* MEMONSTATE */
->>>       },
->>> +     .wakeup_lat = {
->>> +             [PWRDM_FUNC_PWRST_OFF] = 800,
->>> +             [PWRDM_FUNC_PWRST_OSWR] = UNSUP_STATE,
->>> +             [PWRDM_FUNC_PWRST_CSWR] = 150,
->>> +             [PWRDM_FUNC_PWRST_ON] = 0,
->>> +     },
->>>  };
+>>> ? ? ? .pwrsts_mem_on ? ?= {
+>>> ? ? ? ? ? ? ? [0] = PWRDM_POWER_ON, ?/* MEMONSTATE */
+>>> ? ? ? },
+>>> + ? ? .wakeup_lat = {
+>>> + ? ? ? ? ? ? [PWRDM_FUNC_PWRST_OFF] = 800,
+>>> + ? ? ? ? ? ? [PWRDM_FUNC_PWRST_OSWR] = UNSUP_STATE,
+>>> + ? ? ? ? ? ? [PWRDM_FUNC_PWRST_CSWR] = 150,
+>>> + ? ? ? ? ? ? [PWRDM_FUNC_PWRST_ON] = 0,
+>>> + ? ? },
+>>> ?};
 >>
 >> A summary about where the latency numbers for each powerdomain come from
 >> would be useful.
@@ -446,48 +446,48 @@ pointed out, the called functions already handle SoC specifics.
 >> [...]
 >>
 >>> @@ -87,64 +60,86 @@ int omap_pm_set_min_bus_tput(struct device *dev, u8 agent_id, unsigned long r)
->>>       return 0;
->>>  }
+>>> ? ? ? return 0;
+>>> ?}
 >>>
 >>> +/*
 >>> + * omap_pm_set_max_dev_wakeup_lat - set/release devices wake-up latency
 >>> + * constraints
 >>> + */
->>>  int omap_pm_set_max_dev_wakeup_lat(struct device *req_dev, struct device *dev,
->>>                                  long t)
->>>  {
->>> +     struct platform_device *pdev, *req_pdev;
->>> +     int ret = 0;
+>>> ?int omap_pm_set_max_dev_wakeup_lat(struct device *req_dev, struct device *dev,
+>>> ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?long t)
+>>> ?{
+>>> + ? ? struct platform_device *pdev, *req_pdev;
+>>> + ? ? int ret = 0;
 >>> +
->>>       if (!req_dev || !dev || t < -1) {
->>>               WARN(1, "OMAP PM: %s: invalid parameter(s)", __func__);
->>>               return -EINVAL;
->>> +     }
+>>> ? ? ? if (!req_dev || !dev || t < -1) {
+>>> ? ? ? ? ? ? ? WARN(1, "OMAP PM: %s: invalid parameter(s)", __func__);
+>>> ? ? ? ? ? ? ? return -EINVAL;
+>>> + ? ? }
 >>> +
->>> +     /* Look for the platform devices */
->>> +     pdev = to_platform_device(dev);
->>> +     req_pdev = to_platform_device(req_dev);
+>>> + ? ? /* Look for the platform devices */
+>>> + ? ? pdev = to_platform_device(dev);
+>>> + ? ? req_pdev = to_platform_device(req_dev);
 >>> +
->>> +     /* Try to catch non platform devices. */
->>> +     if ((pdev->name == NULL) || (req_pdev->name == NULL)) {
->>> +             pr_err("OMAP-PM set_wakeup_lat: Error: platform devices "
->>> +                    "not valid\n");
->>> +             return -EINVAL;
->>> +     } else {
->>> +             /* Call the omap_device API */
->>> +             ret = omap_device_set_max_dev_wakeup_lat(req_pdev, pdev, t);
->>> +     }
+>>> + ? ? /* Try to catch non platform devices. */
+>>> + ? ? if ((pdev->name == NULL) || (req_pdev->name == NULL)) {
+>>> + ? ? ? ? ? ? pr_err("OMAP-PM set_wakeup_lat: Error: platform devices "
+>>> + ? ? ? ? ? ? ? ? ? ?"not valid\n");
+>>> + ? ? ? ? ? ? return -EINVAL;
+>>> + ? ? } else {
+>>> + ? ? ? ? ? ? /* Call the omap_device API */
+>>> + ? ? ? ? ? ? ret = omap_device_set_max_dev_wakeup_lat(req_pdev, pdev, t);
+>>> + ? ? }
 >>
->> I don't think a NULL name check is the right sanity check here.  WHat
+>> I don't think a NULL name check is the right sanity check here. ?WHat
 >> you really need to know is whether the target device is an omap_device.
 >> The requesting device can be anything (I think.)
 >>
 >> Here's a simpler check:
 >>
->>        if (pdev->dev->parent == &omap_device_parent)
->>                ret = omap_device_set_max_dev_wakeup_lat(req_pdev, pdev, t);
->>        else
->>                ...
+>> ? ? ? ?if (pdev->dev->parent == &omap_device_parent)
+>> ? ? ? ? ? ? ? ?ret = omap_device_set_max_dev_wakeup_lat(req_pdev, pdev, t);
+>> ? ? ? ?else
+>> ? ? ? ? ? ? ? ?...
 > Ok I will use this test. Note: the dev parameter is already checked
 > for NULL above.
 >
@@ -502,7 +502,3 @@ I agree that the only the target device needs to be an omap_device, the
 requester can be any device.
 
 Kevin
---
-To unsubscribe from this list: send the line "unsubscribe linux-omap" in
-the body of a message to majordomo@vger.kernel.org
-More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff --git a/a/content_digest b/N1/content_digest
index 944f302..c6bdc32 100644
--- a/a/content_digest
+++ b/N1/content_digest
@@ -2,14 +2,10 @@
  "ref\01299250375-26134-3-git-send-email-j-pihet@ti.com\0"
  "ref\087aah6xsqk.fsf@ti.com\0"
  "ref\0AANLkTinKmQztha_tKM0zB7CWMqbCLtsaYxZrdX3RVvW+@mail.gmail.com\0"
- "From\0Kevin Hilman <khilman@ti.com>\0"
- "Subject\0Re: [PATCH 2/2] OMAP: PM: implement devices wakeup latency constraints APIs\0"
+ "From\0khilman@ti.com (Kevin Hilman)\0"
+ "Subject\0[PATCH 2/2] OMAP: PM: implement devices wakeup latency constraints APIs\0"
  "Date\0Tue, 08 Mar 2011 09:33:45 -0800\0"
- "To\0Jean Pihet <jean.pihet@newoldbits.com>\0"
- "Cc\0linux-omap@vger.kernel.org"
-  linux-arm-kernel@lists.infradead.org
-  Jean Pihet <j-pihet@ti.com>
- " Vibhore Vardhan <vvardhan@ti.com>\0"
+ "To\0linux-arm-kernel@lists.infradead.org\0"
  "\00:1\0"
  "b\0"
  "Jean Pihet <jean.pihet@newoldbits.com> writes:\n"
@@ -24,7 +20,7 @@
  ">>> release the constraints.\n"
  ">>>\n"
  ">>> NOTE: only works for devices which have been converted to use\n"
- ">>> \302\240 \302\240 \302\240 omap_device/omap_hwmod.\n"
+ ">>> ? ? ? omap_device/omap_hwmod.\n"
  ">>>\n"
  ">>> Longer term, we could possibly remove this API from the OMAP PM layer,\n"
  ">>> and instead directly use the device level API.\n"
@@ -45,7 +41,7 @@
  ">> started.\n"
  ">>\n"
  ">> Also, I had a problem doing a real dumb test until I figured out the\n"
- ">> problem with the init sequence. \302\240I tried setting a constraint in the\n"
+ ">> problem with the init sequence. ?I tried setting a constraint in the\n"
  ">> device init code for UART (mach-omap2/serial.c:omap_serial_init_port()),\n"
  ">> and then I realized that that runs before\n"
  ">> mach-omap2/pm34xx.c:pwrdms_setup() which also calls\n"
@@ -61,9 +57,9 @@
  "in the boot process than device init code, that might be too strict.\n"
  "\n"
  ">> Also, for debug purposes, it might be useful to have a per-device sysfs\n"
- ">> interface to setting this wakeup latency constraint. \302\240Something like\n"
+ ">> interface to setting this wakeup latency constraint. ?Something like\n"
  ">>\n"
- ">> \302\240 /sys/devices/platform/omap/.../power/wakeup_latency\n"
+ ">> ? /sys/devices/platform/omap/.../power/wakeup_latency\n"
  "> I do not see this as a debug interface but rather an API to the user space.\n"
  "> If that is the case there are some issues to deal with, cf. below.\n"
  "\n"
@@ -79,14 +75,14 @@
  "want subsequent writes to override  previous ones.\n"
  "\n"
  ">> As far as implementation goes, you've so far implemented only wakeup\n"
- ">> latencies, but not througput. \302\240When you implement throughput you will\n"
+ ">> latencies, but not througput. ?When you implement throughput you will\n"
  ">> have to duplicate large parts of this code and data structures for\n"
  ">> throughput, and if ever add some other constraint (frequency, voltage)\n"
  ">> it would need to be duplicated again.\n"
  ">>\n"
  ">> Maybe now is the time to consider an interface to add a generic\n"
  ">> per-device constraint, with a type (latency, throughput, etc.), or\n"
- ">> \"class\" as it's called in PM QoS. \302\240For now the type/class does not need\n"
+ ">> \"class\" as it's called in PM QoS. ?For now the type/class does not need\n"
  ">> to be exposed externally, but will make implementing new constraint\n"
  ">> types much easer.\n"
  "> Ok that makes sense.\n"
@@ -106,32 +102,32 @@
  ">>> ---\n"
  ">>> Based on khilman's pm-core branch\n"
  ">>>\n"
- ">>> \302\240arch/arm/mach-omap2/omap_hwmod.c \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240| \302\240 62 ++++++++-\n"
- ">>> \302\240arch/arm/mach-omap2/powerdomain.c \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 | \302\240197 +++++++++++++++++++++++++\n"
- ">>> \302\240arch/arm/mach-omap2/powerdomain.h \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 | \302\240 39 +++++-\n"
- ">>> \302\240arch/arm/mach-omap2/powerdomains3xxx_data.c \302\240 | \302\240 60 ++++++++\n"
- ">>> \302\240arch/arm/plat-omap/include/plat/omap_device.h | \302\240 \302\2402 +\n"
- ">>> \302\240arch/arm/plat-omap/include/plat/omap_hwmod.h \302\240| \302\240 \302\2402 +\n"
- ">>> \302\240arch/arm/plat-omap/omap-pm-constraints.c \302\240 \302\240 \302\240| \302\240121 +++++++--------\n"
- ">>> \302\240arch/arm/plat-omap/omap_device.c \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240| \302\240 28 ++++\n"
- ">>> \302\2408 files changed, 446 insertions(+), 65 deletions(-)\n"
+ ">>> ?arch/arm/mach-omap2/omap_hwmod.c ? ? ? ? ? ? ?| ? 62 ++++++++-\n"
+ ">>> ?arch/arm/mach-omap2/powerdomain.c ? ? ? ? ? ? | ?197 +++++++++++++++++++++++++\n"
+ ">>> ?arch/arm/mach-omap2/powerdomain.h ? ? ? ? ? ? | ? 39 +++++-\n"
+ ">>> ?arch/arm/mach-omap2/powerdomains3xxx_data.c ? | ? 60 ++++++++\n"
+ ">>> ?arch/arm/plat-omap/include/plat/omap_device.h | ? ?2 +\n"
+ ">>> ?arch/arm/plat-omap/include/plat/omap_hwmod.h ?| ? ?2 +\n"
+ ">>> ?arch/arm/plat-omap/omap-pm-constraints.c ? ? ?| ?121 +++++++--------\n"
+ ">>> ?arch/arm/plat-omap/omap_device.c ? ? ? ? ? ? ?| ? 28 ++++\n"
+ ">>> ?8 files changed, 446 insertions(+), 65 deletions(-)\n"
  ">>>\n"
  ">>> diff --git a/arch/arm/mach-omap2/omap_hwmod.c b/arch/arm/mach-omap2/omap_hwmod.c\n"
  ">>> index 028efda..bad8248 100644\n"
  ">>> --- a/arch/arm/mach-omap2/omap_hwmod.c\n"
  ">>> +++ b/arch/arm/mach-omap2/omap_hwmod.c\n"
  ">>> @@ -142,6 +142,7 @@\n"
- ">>> \302\240#include \"powerdomain.h\"\n"
- ">>> \302\240#include <plat/clock.h>\n"
- ">>> \302\240#include <plat/omap_hwmod.h>\n"
+ ">>> ?#include \"powerdomain.h\"\n"
+ ">>> ?#include <plat/clock.h>\n"
+ ">>> ?#include <plat/omap_hwmod.h>\n"
  ">>> +#include <plat/omap_device.h>\n"
- ">>> \302\240#include <plat/prcm.h>\n"
+ ">>> ?#include <plat/prcm.h>\n"
  ">>>\n"
- ">>> \302\240#include \"cm2xxx_3xxx.h\"\n"
+ ">>> ?#include \"cm2xxx_3xxx.h\"\n"
  ">>> @@ -2267,10 +2268,69 @@ ohsps_unlock:\n"
- ">>> \302\240}\n"
+ ">>> ?}\n"
  ">>>\n"
- ">>> \302\240/**\n"
+ ">>> ?/**\n"
  ">>> + * omap_hwmod_set_max_dev_wakeup_lat - set a device wake-up constraint\n"
  ">>> + * @oh: the device of @oh to set a constraint on.\n"
  ">>> + * @req_oh: the device of @req_oh is the requester of the constraint.\n"
@@ -147,88 +143,88 @@
  ">>> + * of the powerdomain assocated with @oh.\n"
  ">>> + */\n"
  ">>> +int omap_hwmod_set_max_dev_wakeup_lat(struct omap_hwmod *req_oh,\n"
- ">>> + \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 struct omap_hwmod *oh, long t)\n"
+ ">>> + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? struct omap_hwmod *oh, long t)\n"
  ">>> +{\n"
- ">>> + \302\240 \302\240 struct device *req_dev;\n"
- ">>> + \302\240 \302\240 struct platform_device *req_pdev;\n"
- ">>> + \302\240 \302\240 struct powerdomain *pwrdm;\n"
+ ">>> + ? ? struct device *req_dev;\n"
+ ">>> + ? ? struct platform_device *req_pdev;\n"
+ ">>> + ? ? struct powerdomain *pwrdm;\n"
  ">>> +\n"
- ">>> + \302\240 \302\240 pwrdm = omap_hwmod_get_pwrdm(oh);\n"
+ ">>> + ? ? pwrdm = omap_hwmod_get_pwrdm(oh);\n"
  ">>> +\n"
- ">>> + \302\240 \302\240 /* Catch devices with undefined powerdomains */\n"
- ">>> + \302\240 \302\240 if (!PTR_ERR(pwrdm)) {\n"
- ">>> + \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 pr_err(\"omap_hwmod: Error: could not find parent \"\n"
- ">>> + \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \"powerdomain for %s\\n\", oh->name);\n"
- ">>> + \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 return -EINVAL;\n"
- ">>> + \302\240 \302\240 }\n"
+ ">>> + ? ? /* Catch devices with undefined powerdomains */\n"
+ ">>> + ? ? if (!PTR_ERR(pwrdm)) {\n"
+ ">>> + ? ? ? ? ? ? pr_err(\"omap_hwmod: Error: could not find parent \"\n"
+ ">>> + ? ? ? ? ? ? ? ? ? ? \"powerdomain for %s\\n\", oh->name);\n"
+ ">>> + ? ? ? ? ? ? return -EINVAL;\n"
+ ">>> + ? ? }\n"
  ">>> +\n"
- ">>> + \302\240 \302\240 req_pdev = &(req_oh->od->pdev);\n"
- ">>> + \302\240 \302\240 if (!PTR_ERR(req_pdev)) {\n"
- ">>> + \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 pr_err(\"omap_hwmod: Error: pdev not found for oh %s\\n\",\n"
- ">>> + \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240oh->name);\n"
- ">>> + \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 return -EINVAL;\n"
- ">>> + \302\240 \302\240 }\n"
+ ">>> + ? ? req_pdev = &(req_oh->od->pdev);\n"
+ ">>> + ? ? if (!PTR_ERR(req_pdev)) {\n"
+ ">>> + ? ? ? ? ? ? pr_err(\"omap_hwmod: Error: pdev not found for oh %s\\n\",\n"
+ ">>> + ? ? ? ? ? ? ? ? ? ?oh->name);\n"
+ ">>> + ? ? ? ? ? ? return -EINVAL;\n"
+ ">>> + ? ? }\n"
  ">>> +\n"
- ">>> + \302\240 \302\240 req_dev = &(req_pdev->dev);\n"
- ">>> + \302\240 \302\240 if (!PTR_ERR(req_dev)) {\n"
- ">>> + \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 pr_err(\"omap_hwmod: Error: device not found for oh %s\\n\",\n"
- ">>> + \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240oh->name);\n"
- ">>> + \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 return -EINVAL;\n"
- ">>> + \302\240 \302\240 }\n"
+ ">>> + ? ? req_dev = &(req_pdev->dev);\n"
+ ">>> + ? ? if (!PTR_ERR(req_dev)) {\n"
+ ">>> + ? ? ? ? ? ? pr_err(\"omap_hwmod: Error: device not found for oh %s\\n\",\n"
+ ">>> + ? ? ? ? ? ? ? ? ? ?oh->name);\n"
+ ">>> + ? ? ? ? ? ? return -EINVAL;\n"
+ ">>> + ? ? }\n"
  ">>> +\n"
- ">>> + \302\240 \302\240 /* Call set/release_constraint for the given pwrdm */\n"
- ">>> + \302\240 \302\240 if (t == -1) {\n"
- ">>> + \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 pr_debug(\"omap_hwmod: remove max device latency constraint: \"\n"
- ">>> + \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240\"oh %s, pwrdm %s, req by oh %s\\n\",\n"
- ">>> + \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240oh->name, pwrdm->name, req_oh->name);\n"
- ">>> + \302\240 \302\240 } else {\n"
- ">>> + \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 pr_debug(\"omap_hwmod: add max device latency constraint: \"\n"
- ">>> + \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240\"oh %s, t = %ld usec, pwrdm %s, req by oh %s\\n\",\n"
- ">>> + \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240oh->name, t, pwrdm->name, req_oh->name);\n"
- ">>> + \302\240 \302\240 }\n"
+ ">>> + ? ? /* Call set/release_constraint for the given pwrdm */\n"
+ ">>> + ? ? if (t == -1) {\n"
+ ">>> + ? ? ? ? ? ? pr_debug(\"omap_hwmod: remove max device latency constraint: \"\n"
+ ">>> + ? ? ? ? ? ? ? ? ? ? ?\"oh %s, pwrdm %s, req by oh %s\\n\",\n"
+ ">>> + ? ? ? ? ? ? ? ? ? ? ?oh->name, pwrdm->name, req_oh->name);\n"
+ ">>> + ? ? } else {\n"
+ ">>> + ? ? ? ? ? ? pr_debug(\"omap_hwmod: add max device latency constraint: \"\n"
+ ">>> + ? ? ? ? ? ? ? ? ? ? ?\"oh %s, t = %ld usec, pwrdm %s, req by oh %s\\n\",\n"
+ ">>> + ? ? ? ? ? ? ? ? ? ? ?oh->name, t, pwrdm->name, req_oh->name);\n"
+ ">>> + ? ? }\n"
  ">>> +\n"
- ">>> + \302\240 \302\240 return pwrdm_wakeuplat_set_constraint(pwrdm, req_dev, t);\n"
+ ">>> + ? ? return pwrdm_wakeuplat_set_constraint(pwrdm, req_dev, t);\n"
  ">>> +}\n"
  ">>> +\n"
  ">>> +/**\n"
- ">>> \302\240 * omap_hwmod_get_context_loss_count - get lost context count\n"
- ">>> \302\240 * @oh: struct omap_hwmod *\n"
- ">>> \302\240 *\n"
+ ">>> ? * omap_hwmod_get_context_loss_count - get lost context count\n"
+ ">>> ? * @oh: struct omap_hwmod *\n"
+ ">>> ? *\n"
  ">>> - * Query the powerdomain of of @oh to get the context loss\n"
  ">>> + * Query the powerdomain of @oh to get the context loss\n"
- ">>> \302\240 * count for this device.\n"
- ">>> \302\240 *\n"
- ">>> \302\240 * Returns the context loss count of the powerdomain assocated with @oh\n"
+ ">>> ? * count for this device.\n"
+ ">>> ? *\n"
+ ">>> ? * Returns the context loss count of the powerdomain assocated with @oh\n"
  ">>> diff --git a/arch/arm/mach-omap2/powerdomain.c b/arch/arm/mach-omap2/powerdomain.c\n"
  ">>> index eaed0df..6fb4741 100644\n"
  ">>> --- a/arch/arm/mach-omap2/powerdomain.c\n"
  ">>> +++ b/arch/arm/mach-omap2/powerdomain.c\n"
  ">>> @@ -19,6 +19,8 @@\n"
- ">>> \302\240#include <linux/list.h>\n"
- ">>> \302\240#include <linux/errno.h>\n"
- ">>> \302\240#include <linux/string.h>\n"
+ ">>> ?#include <linux/list.h>\n"
+ ">>> ?#include <linux/errno.h>\n"
+ ">>> ?#include <linux/string.h>\n"
  ">>> +#include <linux/slab.h>\n"
  ">>> +\n"
- ">>> \302\240#include \"cm2xxx_3xxx.h\"\n"
- ">>> \302\240#include \"prcm44xx.h\"\n"
- ">>> \302\240#include \"cm44xx.h\"\n"
+ ">>> ?#include \"cm2xxx_3xxx.h\"\n"
+ ">>> ?#include \"prcm44xx.h\"\n"
+ ">>> ?#include \"cm44xx.h\"\n"
  ">>> @@ -103,6 +105,13 @@ static int _pwrdm_register(struct powerdomain *pwrdm)\n"
- ">>> \302\240 \302\240 \302\240 pwrdm->state = pwrdm_read_pwrst(pwrdm);\n"
- ">>> \302\240 \302\240 \302\240 pwrdm->state_counter[pwrdm->state] = 1;\n"
+ ">>> ? ? ? pwrdm->state = pwrdm_read_pwrst(pwrdm);\n"
+ ">>> ? ? ? pwrdm->state_counter[pwrdm->state] = 1;\n"
  ">>>\n"
- ">>> + \302\240 \302\240 /* Initialize priority ordered list for wakeup latency constraint */\n"
- ">>> + \302\240 \302\240 spin_lock_init(&pwrdm->wakeuplat_lock);\n"
- ">>> + \302\240 \302\240 plist_head_init(&pwrdm->wakeuplat_dev_list, &pwrdm->wakeuplat_lock);\n"
+ ">>> + ? ? /* Initialize priority ordered list for wakeup latency constraint */\n"
+ ">>> + ? ? spin_lock_init(&pwrdm->wakeuplat_lock);\n"
+ ">>> + ? ? plist_head_init(&pwrdm->wakeuplat_dev_list, &pwrdm->wakeuplat_lock);\n"
  ">>> +\n"
- ">>> + \302\240 \302\240 /* res_mutex protects res_list add and del ops */\n"
- ">>> + \302\240 \302\240 mutex_init(&pwrdm->wakeuplat_mutex);\n"
+ ">>> + ? ? /* res_mutex protects res_list add and del ops */\n"
+ ">>> + ? ? mutex_init(&pwrdm->wakeuplat_mutex);\n"
  ">>> +\n"
- ">>> \302\240 \302\240 \302\240 pr_debug(\"powerdomain: registered %s\\n\", pwrdm->name);\n"
+ ">>> ? ? ? pr_debug(\"powerdomain: registered %s\\n\", pwrdm->name);\n"
  ">>>\n"
- ">>> \302\240 \302\240 \302\240 return 0;\n"
+ ">>> ? ? ? return 0;\n"
  ">>> @@ -176,6 +185,74 @@ static int _pwrdm_post_transition_cb(struct powerdomain *pwrdm, void *unused)\n"
- ">>> \302\240 \302\240 \302\240 return 0;\n"
- ">>> \302\240}\n"
+ ">>> ? ? ? return 0;\n"
+ ">>> ?}\n"
  ">>>\n"
  ">>> +/**\n"
  ">>> + * pwrdm_wakeuplat_update_pwrst - Update power domain power state if needed\n"
@@ -244,30 +240,30 @@
  ">>> + */\n"
  ">>> +static int pwrdm_wakeuplat_update_pwrst(struct powerdomain *pwrdm)\n"
  ">>> +{\n"
- ">>> + \302\240 \302\240 struct plist_node *node;\n"
- ">>> + \302\240 \302\240 int ret = 0, new_state;\n"
- ">>> + \302\240 \302\240 long min_latency = -1;\n"
+ ">>> + ? ? struct plist_node *node;\n"
+ ">>> + ? ? int ret = 0, new_state;\n"
+ ">>> + ? ? long min_latency = -1;\n"
  ">>> +\n"
- ">>> + \302\240 \302\240 /* Find the strongest constraint from the plist */\n"
- ">>> + \302\240 \302\240 if (!plist_head_empty(&pwrdm->wakeuplat_dev_list)) {\n"
- ">>> + \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 node = plist_first(&pwrdm->wakeuplat_dev_list);\n"
- ">>> + \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 min_latency = node->prio;\n"
- ">>> + \302\240 \302\240 }\n"
+ ">>> + ? ? /* Find the strongest constraint from the plist */\n"
+ ">>> + ? ? if (!plist_head_empty(&pwrdm->wakeuplat_dev_list)) {\n"
+ ">>> + ? ? ? ? ? ? node = plist_first(&pwrdm->wakeuplat_dev_list);\n"
+ ">>> + ? ? ? ? ? ? min_latency = node->prio;\n"
+ ">>> + ? ? }\n"
  ">>> +\n"
- ">>> + \302\240 \302\240 /* Find power state with wakeup latency < minimum constraint. */\n"
- ">>> + \302\240 \302\240 for (new_state = 0x0; new_state < PWRDM_MAX_PWRSTS; new_state++) {\n"
- ">>> + \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 if (min_latency == -1 ||\n"
- ">>> + \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 pwrdm->wakeup_lat[new_state] <= min_latency)\n"
- ">>> + \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 break;\n"
- ">>> + \302\240 \302\240 }\n"
+ ">>> + ? ? /* Find power state with wakeup latency < minimum constraint. */\n"
+ ">>> + ? ? for (new_state = 0x0; new_state < PWRDM_MAX_PWRSTS; new_state++) {\n"
+ ">>> + ? ? ? ? ? ? if (min_latency == -1 ||\n"
+ ">>> + ? ? ? ? ? ? ? ? pwrdm->wakeup_lat[new_state] <= min_latency)\n"
+ ">>> + ? ? ? ? ? ? ? ? ? ? break;\n"
+ ">>> + ? ? }\n"
  ">>> +\n"
- ">>> + \302\240 \302\240 switch (new_state) {\n"
- ">>> + \302\240 \302\240 case PWRDM_FUNC_PWRST_OFF:\n"
- ">>> + \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 new_state = PWRDM_POWER_OFF;\n"
- ">>> + \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 break;\n"
- ">>> + \302\240 \302\240 case PWRDM_FUNC_PWRST_OSWR:\n"
- ">>> + \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 if (cpu_is_omap34xx())\n"
- ">>> + \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 pwrdm_set_logic_retst(pwrdm, PWRDM_POWER_OFF);\n"
+ ">>> + ? ? switch (new_state) {\n"
+ ">>> + ? ? case PWRDM_FUNC_PWRST_OFF:\n"
+ ">>> + ? ? ? ? ? ? new_state = PWRDM_POWER_OFF;\n"
+ ">>> + ? ? ? ? ? ? break;\n"
+ ">>> + ? ? case PWRDM_FUNC_PWRST_OSWR:\n"
+ ">>> + ? ? ? ? ? ? if (cpu_is_omap34xx())\n"
+ ">>> + ? ? ? ? ? ? ? ? ? ? pwrdm_set_logic_retst(pwrdm, PWRDM_POWER_OFF);\n"
  ">>\n"
  ">> cpu_is_* checks here aren't right.\n"
  ">>\n"
@@ -286,34 +282,34 @@
  "pointed out, the called functions already handle SoC specifics.\n"
  "\n"
  ">>\n"
- ">>> + \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 new_state = PWRDM_POWER_RET;\n"
- ">>> + \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 break;\n"
- ">>> + \302\240 \302\240 case PWRDM_FUNC_PWRST_CSWR:\n"
- ">>> + \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 if (cpu_is_omap34xx())\n"
- ">>> + \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 pwrdm_set_logic_retst(pwrdm, PWRDM_POWER_RET);\n"
- ">>> + \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 new_state = PWRDM_POWER_RET;\n"
- ">>> + \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 break;\n"
- ">>> + \302\240 \302\240 case PWRDM_FUNC_PWRST_ON:\n"
- ">>> + \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 new_state = PWRDM_POWER_ON;\n"
- ">>> + \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 break;\n"
- ">>> + \302\240 \302\240 default:\n"
- ">>> + \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 pr_warn(\"powerdomain: requested latency constraint not \"\n"
- ">>> + \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \"supported %s set to ON state\\n\", pwrdm->name);\n"
- ">>> + \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 new_state = PWRDM_POWER_ON;\n"
- ">>> + \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 break;\n"
- ">>> + \302\240 \302\240 }\n"
+ ">>> + ? ? ? ? ? ? new_state = PWRDM_POWER_RET;\n"
+ ">>> + ? ? ? ? ? ? break;\n"
+ ">>> + ? ? case PWRDM_FUNC_PWRST_CSWR:\n"
+ ">>> + ? ? ? ? ? ? if (cpu_is_omap34xx())\n"
+ ">>> + ? ? ? ? ? ? ? ? ? ? pwrdm_set_logic_retst(pwrdm, PWRDM_POWER_RET);\n"
+ ">>> + ? ? ? ? ? ? new_state = PWRDM_POWER_RET;\n"
+ ">>> + ? ? ? ? ? ? break;\n"
+ ">>> + ? ? case PWRDM_FUNC_PWRST_ON:\n"
+ ">>> + ? ? ? ? ? ? new_state = PWRDM_POWER_ON;\n"
+ ">>> + ? ? ? ? ? ? break;\n"
+ ">>> + ? ? default:\n"
+ ">>> + ? ? ? ? ? ? pr_warn(\"powerdomain: requested latency constraint not \"\n"
+ ">>> + ? ? ? ? ? ? ? ? ? ? \"supported %s set to ON state\\n\", pwrdm->name);\n"
+ ">>> + ? ? ? ? ? ? new_state = PWRDM_POWER_ON;\n"
+ ">>> + ? ? ? ? ? ? break;\n"
+ ">>> + ? ? }\n"
  ">>> +\n"
- ">>> + \302\240 \302\240 if (pwrdm_read_pwrst(pwrdm) != new_state) {\n"
- ">>> + \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 if (cpu_is_omap34xx())\n"
- ">>> + \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 ret = omap_set_pwrdm_state(pwrdm, new_state);\n"
- ">>> + \302\240 \302\240 }\n"
+ ">>> + ? ? if (pwrdm_read_pwrst(pwrdm) != new_state) {\n"
+ ">>> + ? ? ? ? ? ? if (cpu_is_omap34xx())\n"
+ ">>> + ? ? ? ? ? ? ? ? ? ? ret = omap_set_pwrdm_state(pwrdm, new_state);\n"
+ ">>> + ? ? }\n"
  ">>> +\n"
- ">>> + \302\240 \302\240 pr_debug(\"powerdomain: %s pwrst: curr=%d, prev=%d next=%d \"\n"
- ">>> + \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240\"min_latency=%ld, set_state=%d\\n\", pwrdm->name,\n"
- ">>> + \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240pwrdm_read_pwrst(pwrdm), pwrdm_read_prev_pwrst(pwrdm),\n"
- ">>> + \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240pwrdm_read_next_pwrst(pwrdm), min_latency, new_state);\n"
+ ">>> + ? ? pr_debug(\"powerdomain: %s pwrst: curr=%d, prev=%d next=%d \"\n"
+ ">>> + ? ? ? ? ? ? ?\"min_latency=%ld, set_state=%d\\n\", pwrdm->name,\n"
+ ">>> + ? ? ? ? ? ? ?pwrdm_read_pwrst(pwrdm), pwrdm_read_prev_pwrst(pwrdm),\n"
+ ">>> + ? ? ? ? ? ? ?pwrdm_read_next_pwrst(pwrdm), min_latency, new_state);\n"
  ">>> +\n"
- ">>> + \302\240 \302\240 return ret;\n"
+ ">>> + ? ? return ret;\n"
  ">>> +}\n"
  ">>> +\n"
  ">>\n"
@@ -324,133 +320,133 @@
  ">>> --- a/arch/arm/mach-omap2/powerdomains3xxx_data.c\n"
  ">>> +++ b/arch/arm/mach-omap2/powerdomains3xxx_data.c\n"
  ">>> @@ -52,6 +52,12 @@ static struct powerdomain iva2_pwrdm = {\n"
- ">>> \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 [2] = PWRSTS_OFF_ON,\n"
- ">>> \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 [3] = PWRDM_POWER_ON,\n"
- ">>> \302\240 \302\240 \302\240 },\n"
- ">>> + \302\240 \302\240 .wakeup_lat = {\n"
- ">>> + \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 [PWRDM_FUNC_PWRST_OFF] = 1100,\n"
- ">>> + \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 [PWRDM_FUNC_PWRST_OSWR] = UNSUP_STATE,\n"
- ">>> + \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 [PWRDM_FUNC_PWRST_CSWR] = 350,\n"
- ">>> + \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 [PWRDM_FUNC_PWRST_ON] = 0,\n"
- ">>> + \302\240 \302\240 },\n"
- ">>> \302\240};\n"
+ ">>> ? ? ? ? ? ? ? [2] = PWRSTS_OFF_ON,\n"
+ ">>> ? ? ? ? ? ? ? [3] = PWRDM_POWER_ON,\n"
+ ">>> ? ? ? },\n"
+ ">>> + ? ? .wakeup_lat = {\n"
+ ">>> + ? ? ? ? ? ? [PWRDM_FUNC_PWRST_OFF] = 1100,\n"
+ ">>> + ? ? ? ? ? ? [PWRDM_FUNC_PWRST_OSWR] = UNSUP_STATE,\n"
+ ">>> + ? ? ? ? ? ? [PWRDM_FUNC_PWRST_CSWR] = 350,\n"
+ ">>> + ? ? ? ? ? ? [PWRDM_FUNC_PWRST_ON] = 0,\n"
+ ">>> + ? ? },\n"
+ ">>> ?};\n"
  ">>>\n"
- ">>> \302\240static struct powerdomain mpu_3xxx_pwrdm = {\n"
+ ">>> ?static struct powerdomain mpu_3xxx_pwrdm = {\n"
  ">>> @@ -68,6 +74,12 @@ static struct powerdomain mpu_3xxx_pwrdm = {\n"
- ">>> \302\240 \302\240 \302\240 .pwrsts_mem_on \302\240 \302\240= {\n"
- ">>> \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 [0] = PWRSTS_OFF_ON,\n"
- ">>> \302\240 \302\240 \302\240 },\n"
- ">>> + \302\240 \302\240 .wakeup_lat = {\n"
- ">>> + \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 [PWRDM_FUNC_PWRST_OFF] = 95,\n"
- ">>> + \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 [PWRDM_FUNC_PWRST_OSWR] = UNSUP_STATE,\n"
- ">>> + \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 [PWRDM_FUNC_PWRST_CSWR] = 45,\n"
- ">>> + \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 [PWRDM_FUNC_PWRST_ON] = 0,\n"
- ">>> + \302\240 \302\240 },\n"
- ">>> \302\240};\n"
+ ">>> ? ? ? .pwrsts_mem_on ? ?= {\n"
+ ">>> ? ? ? ? ? ? ? [0] = PWRSTS_OFF_ON,\n"
+ ">>> ? ? ? },\n"
+ ">>> + ? ? .wakeup_lat = {\n"
+ ">>> + ? ? ? ? ? ? [PWRDM_FUNC_PWRST_OFF] = 95,\n"
+ ">>> + ? ? ? ? ? ? [PWRDM_FUNC_PWRST_OSWR] = UNSUP_STATE,\n"
+ ">>> + ? ? ? ? ? ? [PWRDM_FUNC_PWRST_CSWR] = 45,\n"
+ ">>> + ? ? ? ? ? ? [PWRDM_FUNC_PWRST_ON] = 0,\n"
+ ">>> + ? ? },\n"
+ ">>> ?};\n"
  ">>>\n"
- ">>> \302\240/*\n"
+ ">>> ?/*\n"
  ">>> @@ -98,6 +110,12 @@ static struct powerdomain core_3xxx_pre_es3_1_pwrdm = {\n"
- ">>> \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 [0] = PWRSTS_OFF_RET_ON, /* MEM1ONSTATE */\n"
- ">>> \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 [1] = PWRSTS_OFF_RET_ON, /* MEM2ONSTATE */\n"
- ">>> \302\240 \302\240 \302\240 },\n"
- ">>> + \302\240 \302\240 .wakeup_lat = {\n"
- ">>> + \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 [PWRDM_FUNC_PWRST_OFF] = 100,\n"
- ">>> + \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 [PWRDM_FUNC_PWRST_OSWR] = UNSUP_STATE,\n"
- ">>> + \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 [PWRDM_FUNC_PWRST_CSWR] = 60,\n"
- ">>> + \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 [PWRDM_FUNC_PWRST_ON] = 0,\n"
- ">>> + \302\240 \302\240 },\n"
- ">>> \302\240};\n"
+ ">>> ? ? ? ? ? ? ? [0] = PWRSTS_OFF_RET_ON, /* MEM1ONSTATE */\n"
+ ">>> ? ? ? ? ? ? ? [1] = PWRSTS_OFF_RET_ON, /* MEM2ONSTATE */\n"
+ ">>> ? ? ? },\n"
+ ">>> + ? ? .wakeup_lat = {\n"
+ ">>> + ? ? ? ? ? ? [PWRDM_FUNC_PWRST_OFF] = 100,\n"
+ ">>> + ? ? ? ? ? ? [PWRDM_FUNC_PWRST_OSWR] = UNSUP_STATE,\n"
+ ">>> + ? ? ? ? ? ? [PWRDM_FUNC_PWRST_CSWR] = 60,\n"
+ ">>> + ? ? ? ? ? ? [PWRDM_FUNC_PWRST_ON] = 0,\n"
+ ">>> + ? ? },\n"
+ ">>> ?};\n"
  ">>>\n"
- ">>> \302\240static struct powerdomain core_3xxx_es3_1_pwrdm = {\n"
+ ">>> ?static struct powerdomain core_3xxx_es3_1_pwrdm = {\n"
  ">>> @@ -121,6 +139,12 @@ static struct powerdomain core_3xxx_es3_1_pwrdm = {\n"
- ">>> \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 [0] = PWRSTS_OFF_RET_ON, /* MEM1ONSTATE */\n"
- ">>> \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 [1] = PWRSTS_OFF_RET_ON, /* MEM2ONSTATE */\n"
- ">>> \302\240 \302\240 \302\240 },\n"
- ">>> + \302\240 \302\240 .wakeup_lat = {\n"
- ">>> + \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 [PWRDM_FUNC_PWRST_OFF] = 100,\n"
- ">>> + \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 [PWRDM_FUNC_PWRST_OSWR] = UNSUP_STATE,\n"
- ">>> + \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 [PWRDM_FUNC_PWRST_CSWR] = 60,\n"
- ">>> + \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 [PWRDM_FUNC_PWRST_ON] = 0,\n"
- ">>> + \302\240 \302\240 },\n"
- ">>> \302\240};\n"
+ ">>> ? ? ? ? ? ? ? [0] = PWRSTS_OFF_RET_ON, /* MEM1ONSTATE */\n"
+ ">>> ? ? ? ? ? ? ? [1] = PWRSTS_OFF_RET_ON, /* MEM2ONSTATE */\n"
+ ">>> ? ? ? },\n"
+ ">>> + ? ? .wakeup_lat = {\n"
+ ">>> + ? ? ? ? ? ? [PWRDM_FUNC_PWRST_OFF] = 100,\n"
+ ">>> + ? ? ? ? ? ? [PWRDM_FUNC_PWRST_OSWR] = UNSUP_STATE,\n"
+ ">>> + ? ? ? ? ? ? [PWRDM_FUNC_PWRST_CSWR] = 60,\n"
+ ">>> + ? ? ? ? ? ? [PWRDM_FUNC_PWRST_ON] = 0,\n"
+ ">>> + ? ? },\n"
+ ">>> ?};\n"
  ">>>\n"
- ">>> \302\240static struct powerdomain dss_pwrdm = {\n"
+ ">>> ?static struct powerdomain dss_pwrdm = {\n"
  ">>> @@ -136,6 +160,12 @@ static struct powerdomain dss_pwrdm = {\n"
- ">>> \302\240 \302\240 \302\240 .pwrsts_mem_on \302\240 \302\240= {\n"
- ">>> \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 [0] = PWRDM_POWER_ON, \302\240/* MEMONSTATE */\n"
- ">>> \302\240 \302\240 \302\240 },\n"
- ">>> + \302\240 \302\240 .wakeup_lat = {\n"
- ">>> + \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 [PWRDM_FUNC_PWRST_OFF] = 70,\n"
- ">>> + \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 [PWRDM_FUNC_PWRST_OSWR] = UNSUP_STATE,\n"
- ">>> + \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 [PWRDM_FUNC_PWRST_CSWR] = 20,\n"
- ">>> + \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 [PWRDM_FUNC_PWRST_ON] = 0,\n"
- ">>> + \302\240 \302\240 },\n"
- ">>> \302\240};\n"
+ ">>> ? ? ? .pwrsts_mem_on ? ?= {\n"
+ ">>> ? ? ? ? ? ? ? [0] = PWRDM_POWER_ON, ?/* MEMONSTATE */\n"
+ ">>> ? ? ? },\n"
+ ">>> + ? ? .wakeup_lat = {\n"
+ ">>> + ? ? ? ? ? ? [PWRDM_FUNC_PWRST_OFF] = 70,\n"
+ ">>> + ? ? ? ? ? ? [PWRDM_FUNC_PWRST_OSWR] = UNSUP_STATE,\n"
+ ">>> + ? ? ? ? ? ? [PWRDM_FUNC_PWRST_CSWR] = 20,\n"
+ ">>> + ? ? ? ? ? ? [PWRDM_FUNC_PWRST_ON] = 0,\n"
+ ">>> + ? ? },\n"
+ ">>> ?};\n"
  ">>>\n"
- ">>> \302\240/*\n"
+ ">>> ?/*\n"
  ">>> @@ -157,6 +187,12 @@ static struct powerdomain sgx_pwrdm = {\n"
- ">>> \302\240 \302\240 \302\240 .pwrsts_mem_on \302\240 \302\240= {\n"
- ">>> \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 [0] = PWRDM_POWER_ON, \302\240/* MEMONSTATE */\n"
- ">>> \302\240 \302\240 \302\240 },\n"
- ">>> + \302\240 \302\240 .wakeup_lat = {\n"
- ">>> + \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 [PWRDM_FUNC_PWRST_OFF] = 1000,\n"
- ">>> + \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 [PWRDM_FUNC_PWRST_OSWR] = UNSUP_STATE,\n"
- ">>> + \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 [PWRDM_FUNC_PWRST_CSWR] = UNSUP_STATE,\n"
- ">>> + \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 [PWRDM_FUNC_PWRST_ON] = 0,\n"
- ">>> + \302\240 \302\240 },\n"
- ">>> \302\240};\n"
+ ">>> ? ? ? .pwrsts_mem_on ? ?= {\n"
+ ">>> ? ? ? ? ? ? ? [0] = PWRDM_POWER_ON, ?/* MEMONSTATE */\n"
+ ">>> ? ? ? },\n"
+ ">>> + ? ? .wakeup_lat = {\n"
+ ">>> + ? ? ? ? ? ? [PWRDM_FUNC_PWRST_OFF] = 1000,\n"
+ ">>> + ? ? ? ? ? ? [PWRDM_FUNC_PWRST_OSWR] = UNSUP_STATE,\n"
+ ">>> + ? ? ? ? ? ? [PWRDM_FUNC_PWRST_CSWR] = UNSUP_STATE,\n"
+ ">>> + ? ? ? ? ? ? [PWRDM_FUNC_PWRST_ON] = 0,\n"
+ ">>> + ? ? },\n"
+ ">>> ?};\n"
  ">>>\n"
- ">>> \302\240static struct powerdomain cam_pwrdm = {\n"
+ ">>> ?static struct powerdomain cam_pwrdm = {\n"
  ">>> @@ -172,6 +208,12 @@ static struct powerdomain cam_pwrdm = {\n"
- ">>> \302\240 \302\240 \302\240 .pwrsts_mem_on \302\240 \302\240= {\n"
- ">>> \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 [0] = PWRDM_POWER_ON, \302\240/* MEMONSTATE */\n"
- ">>> \302\240 \302\240 \302\240 },\n"
- ">>> + \302\240 \302\240 .wakeup_lat = {\n"
- ">>> + \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 [PWRDM_FUNC_PWRST_OFF] = 850,\n"
- ">>> + \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 [PWRDM_FUNC_PWRST_OSWR] = UNSUP_STATE,\n"
- ">>> + \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 [PWRDM_FUNC_PWRST_CSWR] = 35,\n"
- ">>> + \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 [PWRDM_FUNC_PWRST_ON] = 0,\n"
- ">>> + \302\240 \302\240 },\n"
- ">>> \302\240};\n"
+ ">>> ? ? ? .pwrsts_mem_on ? ?= {\n"
+ ">>> ? ? ? ? ? ? ? [0] = PWRDM_POWER_ON, ?/* MEMONSTATE */\n"
+ ">>> ? ? ? },\n"
+ ">>> + ? ? .wakeup_lat = {\n"
+ ">>> + ? ? ? ? ? ? [PWRDM_FUNC_PWRST_OFF] = 850,\n"
+ ">>> + ? ? ? ? ? ? [PWRDM_FUNC_PWRST_OSWR] = UNSUP_STATE,\n"
+ ">>> + ? ? ? ? ? ? [PWRDM_FUNC_PWRST_CSWR] = 35,\n"
+ ">>> + ? ? ? ? ? ? [PWRDM_FUNC_PWRST_ON] = 0,\n"
+ ">>> + ? ? },\n"
+ ">>> ?};\n"
  ">>>\n"
- ">>> \302\240static struct powerdomain per_pwrdm = {\n"
+ ">>> ?static struct powerdomain per_pwrdm = {\n"
  ">>> @@ -187,6 +229,12 @@ static struct powerdomain per_pwrdm = {\n"
- ">>> \302\240 \302\240 \302\240 .pwrsts_mem_on \302\240 \302\240= {\n"
- ">>> \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 [0] = PWRDM_POWER_ON, \302\240/* MEMONSTATE */\n"
- ">>> \302\240 \302\240 \302\240 },\n"
- ">>> + \302\240 \302\240 .wakeup_lat = {\n"
- ">>> + \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 [PWRDM_FUNC_PWRST_OFF] = 200,\n"
- ">>> + \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 [PWRDM_FUNC_PWRST_OSWR] = UNSUP_STATE,\n"
- ">>> + \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 [PWRDM_FUNC_PWRST_CSWR] = 110,\n"
- ">>> + \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 [PWRDM_FUNC_PWRST_ON] = 0,\n"
- ">>> + \302\240 \302\240 },\n"
- ">>> \302\240};\n"
+ ">>> ? ? ? .pwrsts_mem_on ? ?= {\n"
+ ">>> ? ? ? ? ? ? ? [0] = PWRDM_POWER_ON, ?/* MEMONSTATE */\n"
+ ">>> ? ? ? },\n"
+ ">>> + ? ? .wakeup_lat = {\n"
+ ">>> + ? ? ? ? ? ? [PWRDM_FUNC_PWRST_OFF] = 200,\n"
+ ">>> + ? ? ? ? ? ? [PWRDM_FUNC_PWRST_OSWR] = UNSUP_STATE,\n"
+ ">>> + ? ? ? ? ? ? [PWRDM_FUNC_PWRST_CSWR] = 110,\n"
+ ">>> + ? ? ? ? ? ? [PWRDM_FUNC_PWRST_ON] = 0,\n"
+ ">>> + ? ? },\n"
+ ">>> ?};\n"
  ">>>\n"
- ">>> \302\240static struct powerdomain emu_pwrdm = {\n"
+ ">>> ?static struct powerdomain emu_pwrdm = {\n"
  ">>> @@ -201,6 +249,12 @@ static struct powerdomain neon_pwrdm = {\n"
- ">>> \302\240 \302\240 \302\240 .omap_chip \302\240 \302\240 \302\240 \302\240= OMAP_CHIP_INIT(CHIP_IS_OMAP3430),\n"
- ">>> \302\240 \302\240 \302\240 .pwrsts \302\240 \302\240 \302\240 \302\240 \302\240 = PWRSTS_OFF_RET_ON,\n"
- ">>> \302\240 \302\240 \302\240 .pwrsts_logic_ret = PWRDM_POWER_RET,\n"
- ">>> + \302\240 \302\240 .wakeup_lat = {\n"
- ">>> + \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 [PWRDM_FUNC_PWRST_OFF] = 200,\n"
- ">>> + \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 [PWRDM_FUNC_PWRST_OSWR] = UNSUP_STATE,\n"
- ">>> + \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 [PWRDM_FUNC_PWRST_CSWR] = 35,\n"
- ">>> + \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 [PWRDM_FUNC_PWRST_ON] = 0,\n"
- ">>> + \302\240 \302\240 },\n"
- ">>> \302\240};\n"
+ ">>> ? ? ? .omap_chip ? ? ? ?= OMAP_CHIP_INIT(CHIP_IS_OMAP3430),\n"
+ ">>> ? ? ? .pwrsts ? ? ? ? ? = PWRSTS_OFF_RET_ON,\n"
+ ">>> ? ? ? .pwrsts_logic_ret = PWRDM_POWER_RET,\n"
+ ">>> + ? ? .wakeup_lat = {\n"
+ ">>> + ? ? ? ? ? ? [PWRDM_FUNC_PWRST_OFF] = 200,\n"
+ ">>> + ? ? ? ? ? ? [PWRDM_FUNC_PWRST_OSWR] = UNSUP_STATE,\n"
+ ">>> + ? ? ? ? ? ? [PWRDM_FUNC_PWRST_CSWR] = 35,\n"
+ ">>> + ? ? ? ? ? ? [PWRDM_FUNC_PWRST_ON] = 0,\n"
+ ">>> + ? ? },\n"
+ ">>> ?};\n"
  ">>>\n"
- ">>> \302\240static struct powerdomain usbhost_pwrdm = {\n"
+ ">>> ?static struct powerdomain usbhost_pwrdm = {\n"
  ">>> @@ -223,6 +277,12 @@ static struct powerdomain usbhost_pwrdm = {\n"
- ">>> \302\240 \302\240 \302\240 .pwrsts_mem_on \302\240 \302\240= {\n"
- ">>> \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 [0] = PWRDM_POWER_ON, \302\240/* MEMONSTATE */\n"
- ">>> \302\240 \302\240 \302\240 },\n"
- ">>> + \302\240 \302\240 .wakeup_lat = {\n"
- ">>> + \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 [PWRDM_FUNC_PWRST_OFF] = 800,\n"
- ">>> + \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 [PWRDM_FUNC_PWRST_OSWR] = UNSUP_STATE,\n"
- ">>> + \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 [PWRDM_FUNC_PWRST_CSWR] = 150,\n"
- ">>> + \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 [PWRDM_FUNC_PWRST_ON] = 0,\n"
- ">>> + \302\240 \302\240 },\n"
- ">>> \302\240};\n"
+ ">>> ? ? ? .pwrsts_mem_on ? ?= {\n"
+ ">>> ? ? ? ? ? ? ? [0] = PWRDM_POWER_ON, ?/* MEMONSTATE */\n"
+ ">>> ? ? ? },\n"
+ ">>> + ? ? .wakeup_lat = {\n"
+ ">>> + ? ? ? ? ? ? [PWRDM_FUNC_PWRST_OFF] = 800,\n"
+ ">>> + ? ? ? ? ? ? [PWRDM_FUNC_PWRST_OSWR] = UNSUP_STATE,\n"
+ ">>> + ? ? ? ? ? ? [PWRDM_FUNC_PWRST_CSWR] = 150,\n"
+ ">>> + ? ? ? ? ? ? [PWRDM_FUNC_PWRST_ON] = 0,\n"
+ ">>> + ? ? },\n"
+ ">>> ?};\n"
  ">>\n"
  ">> A summary about where the latency numbers for each powerdomain come from\n"
  ">> would be useful.\n"
@@ -460,48 +456,48 @@
  ">> [...]\n"
  ">>\n"
  ">>> @@ -87,64 +60,86 @@ int omap_pm_set_min_bus_tput(struct device *dev, u8 agent_id, unsigned long r)\n"
- ">>> \302\240 \302\240 \302\240 return 0;\n"
- ">>> \302\240}\n"
+ ">>> ? ? ? return 0;\n"
+ ">>> ?}\n"
  ">>>\n"
  ">>> +/*\n"
  ">>> + * omap_pm_set_max_dev_wakeup_lat - set/release devices wake-up latency\n"
  ">>> + * constraints\n"
  ">>> + */\n"
- ">>> \302\240int omap_pm_set_max_dev_wakeup_lat(struct device *req_dev, struct device *dev,\n"
- ">>> \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240long t)\n"
- ">>> \302\240{\n"
- ">>> + \302\240 \302\240 struct platform_device *pdev, *req_pdev;\n"
- ">>> + \302\240 \302\240 int ret = 0;\n"
+ ">>> ?int omap_pm_set_max_dev_wakeup_lat(struct device *req_dev, struct device *dev,\n"
+ ">>> ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?long t)\n"
+ ">>> ?{\n"
+ ">>> + ? ? struct platform_device *pdev, *req_pdev;\n"
+ ">>> + ? ? int ret = 0;\n"
  ">>> +\n"
- ">>> \302\240 \302\240 \302\240 if (!req_dev || !dev || t < -1) {\n"
- ">>> \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 WARN(1, \"OMAP PM: %s: invalid parameter(s)\", __func__);\n"
- ">>> \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 return -EINVAL;\n"
- ">>> + \302\240 \302\240 }\n"
+ ">>> ? ? ? if (!req_dev || !dev || t < -1) {\n"
+ ">>> ? ? ? ? ? ? ? WARN(1, \"OMAP PM: %s: invalid parameter(s)\", __func__);\n"
+ ">>> ? ? ? ? ? ? ? return -EINVAL;\n"
+ ">>> + ? ? }\n"
  ">>> +\n"
- ">>> + \302\240 \302\240 /* Look for the platform devices */\n"
- ">>> + \302\240 \302\240 pdev = to_platform_device(dev);\n"
- ">>> + \302\240 \302\240 req_pdev = to_platform_device(req_dev);\n"
+ ">>> + ? ? /* Look for the platform devices */\n"
+ ">>> + ? ? pdev = to_platform_device(dev);\n"
+ ">>> + ? ? req_pdev = to_platform_device(req_dev);\n"
  ">>> +\n"
- ">>> + \302\240 \302\240 /* Try to catch non platform devices. */\n"
- ">>> + \302\240 \302\240 if ((pdev->name == NULL) || (req_pdev->name == NULL)) {\n"
- ">>> + \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 pr_err(\"OMAP-PM set_wakeup_lat: Error: platform devices \"\n"
- ">>> + \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240\"not valid\\n\");\n"
- ">>> + \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 return -EINVAL;\n"
- ">>> + \302\240 \302\240 } else {\n"
- ">>> + \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 /* Call the omap_device API */\n"
- ">>> + \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 ret = omap_device_set_max_dev_wakeup_lat(req_pdev, pdev, t);\n"
- ">>> + \302\240 \302\240 }\n"
+ ">>> + ? ? /* Try to catch non platform devices. */\n"
+ ">>> + ? ? if ((pdev->name == NULL) || (req_pdev->name == NULL)) {\n"
+ ">>> + ? ? ? ? ? ? pr_err(\"OMAP-PM set_wakeup_lat: Error: platform devices \"\n"
+ ">>> + ? ? ? ? ? ? ? ? ? ?\"not valid\\n\");\n"
+ ">>> + ? ? ? ? ? ? return -EINVAL;\n"
+ ">>> + ? ? } else {\n"
+ ">>> + ? ? ? ? ? ? /* Call the omap_device API */\n"
+ ">>> + ? ? ? ? ? ? ret = omap_device_set_max_dev_wakeup_lat(req_pdev, pdev, t);\n"
+ ">>> + ? ? }\n"
  ">>\n"
- ">> I don't think a NULL name check is the right sanity check here. \302\240WHat\n"
+ ">> I don't think a NULL name check is the right sanity check here. ?WHat\n"
  ">> you really need to know is whether the target device is an omap_device.\n"
  ">> The requesting device can be anything (I think.)\n"
  ">>\n"
  ">> Here's a simpler check:\n"
  ">>\n"
- ">> \302\240 \302\240 \302\240 \302\240if (pdev->dev->parent == &omap_device_parent)\n"
- ">> \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240ret = omap_device_set_max_dev_wakeup_lat(req_pdev, pdev, t);\n"
- ">> \302\240 \302\240 \302\240 \302\240else\n"
- ">> \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240...\n"
+ ">> ? ? ? ?if (pdev->dev->parent == &omap_device_parent)\n"
+ ">> ? ? ? ? ? ? ? ?ret = omap_device_set_max_dev_wakeup_lat(req_pdev, pdev, t);\n"
+ ">> ? ? ? ?else\n"
+ ">> ? ? ? ? ? ? ? ?...\n"
  "> Ok I will use this test. Note: the dev parameter is already checked\n"
  "> for NULL above.\n"
  ">\n"
@@ -515,10 +511,6 @@
  "I agree that the only the target device needs to be an omap_device, the\n"
  "requester can be any device.\n"
  "\n"
- "Kevin\n"
- "--\n"
- "To unsubscribe from this list: send the line \"unsubscribe linux-omap\" in\n"
- "the body of a message to majordomo@vger.kernel.org\n"
- More majordomo info at  http://vger.kernel.org/majordomo-info.html
+ Kevin
 
-5860dc4afb160e67ba30ce135132020fc4f02393e6091ab2f4c2cb07d982b3f6
+eea02f12e51ddae20adca479ad205c5cdb9b2f17bf1c85d7108a9614817f4099

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.