kernel/kernel-mfld-blackbay.git
13 years agoi2c-designware: move controller config to bus specific portion of driver
Dirk Brandewie [Thu, 25 Aug 2011 11:14:03 +0000 (12:14 +0100)]
i2c-designware: move controller config to bus specific portion of driver

With multiple I2C adapters possible in the system each running at
(possibly) different speeds we need to move the controller
configuration bit field to the adapter.

Signed-off-by: Dirk Brandewie <dirk.brandewie@gmail.com>
Signed-off-by: Ben Dooks <ben-linux@fluff.org>
Signed-off-by: Alan Cox <alan@linux.intel.com>
13 years agoi2c-designware: move i2c functionality bit field to be adapter specific
Dirk Brandewie [Thu, 25 Aug 2011 11:14:03 +0000 (12:14 +0100)]
i2c-designware: move i2c functionality bit field to be adapter specific

The functionality of the adapter depends on the configuration of the
IP block at silicon compile time and is adapter specific.

Signed-off-by: Dirk Brandewie <dirk.brandewie@gmail.com>
Signed-off-by: Ben Dooks <ben-linux@fluff.org>
Signed-off-by: Alan Cox <alan@linux.intel.com>
13 years agoi2c-designware: Move retriveving the clock speed out of core code.
Dirk Brandewie [Thu, 25 Aug 2011 11:14:02 +0000 (12:14 +0100)]
i2c-designware: Move retriveving the clock speed out of core code.

The clock frequecy supplied to the IP core is specific to a single
instance of the driver.  This patch makes it possible to have multiple
Designware I2C cores in the system possibly running at different core
frequencies.

Signed-off-by: Dirk Brandewie <dirk.brandewie@gmail.com>
Signed-off-by: Ben Dooks <ben-linux@fluff.org>
Signed-off-by: Alan Cox <alan@linux.intel.com>
13 years agoi2c-designware: split of i2c-designware.c into core and bus specific parts
Dirk Brandewie [Thu, 25 Aug 2011 11:14:02 +0000 (12:14 +0100)]
i2c-designware: split of i2c-designware.c into core and bus specific parts

This patch splits i2c-designware.c into three pieces:
     i2c-designware-core.c, contains the code that interacts directly
     with the core.

     i2c-designware-platdrv.c, contains the code specific to the
     platform driver using the core.

     i2c-designware-core.h contains the definitions and declareations
     shared by i2c-designware-core.c and i2c-designware-platdrv.c.

This patch is the first in a set to allow multiple instances of the
designware I2C core in the system.

Change-Id: Ib876d49780e55ade274026380326c550752e4193
Signed-off-by: Dirk Brandewie <dirk.brandewie@gmail.com>
Signed-off-by: Ben Dooks <ben-linux@fluff.org>
Signed-off-by: Alan Cox <alan@linux.intel.com>
13 years agoUSB: net2272: driver for PLX NET2272 USB device controller
Seth Levy [Mon, 6 Jun 2011 23:42:44 +0000 (19:42 -0400)]
USB: net2272: driver for PLX NET2272 USB device controller

This is based on the last release from PLX:
http://www.plxtech.com/files/products/net2000/software/selectiontool/RE061204-net2272-linux2.6.18.tgz

I've managed to contact them and they've confirmed that this driver was
wholly written by PLX (Seth Levy).  While they have no problem with it
being merged (and they've already licensed it as GPL), they don't have
any interest in doing so themselves as this is an old part for them.

ADI has long had an add-on card which has this part on it, so we've been
keeping it up-to-date out of tree.  But now that PLX has confirmed the
source of the driver, we can can take the next step of cleaning it up and
getting it merged.

So here we are!  I've done quite a large clean up of the driver and
attempted to address all the common issues.  Hopefully in the process,
I haven't broken anything.  While it seems to still work with the board
that I have access to, it is not a PCI variant.  So I have not tested
any of the PCI logic myself (beyond clean compile).  Perhaps someone who
actually has a card and cares can do so.

I'll try to address further feedback, but don't expect miracles.  I'm
not really familiar with the part itself, just the platform glue.

Change-Id: Ife07cd1726128d06cf9f5df07108474996b46ca2
Signed-off-by: Seth Levy <seth.levy@plxtech.com>
Signed-off-by: Ash Aziz <ash.aziz@plxtech.com>
Signed-off-by: Roy Huang <roy.huang@analog.com>
Signed-off-by: Michael Hennerich <michael.hennerich@analog.com>
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
13 years agoPMU: fix lpmp3 trigger when lss_51, 52 in D0i0
Illyas Mansoor [Tue, 6 Sep 2011 17:33:42 +0000 (23:03 +0530)]
PMU: fix lpmp3 trigger when lss_51, 52 in D0i0

When voice call + mp3 is on enabling s0i1/LPMP3 causes
system hang.

This is due to the target config for LPMP3 was set
to get triggered if LSS_08/09 + LSS_51/52 are in D0i0
and rest in D0i3.

Fixed this by add check for LSS_51/52 to be in D0i3 before
triggering LPMP3 ie., only LSS_08/09 can be in D0i0 for
triggering LPMP3.

Change-Id: I03866e3aa5325149303902a80b591a88ea19ff63
Signed-off-by: Illyas Mansoor <illyas.mansoor@intel.com>
13 years agoPMU: fix divide by zero in pmu_stat_seq_printf
Illyas Mansoor [Tue, 30 Aug 2011 11:10:55 +0000 (16:40 +0530)]
PMU: fix divide by zero in pmu_stat_seq_printf

When echo clear > /d/mid_pmu_states is done,
and immediately "cat /d/mid_pmu_states" is
called, the variable init_2_now_time could be zero.

t = cpu_clock(raw_smp_processor_id());
t -= pmu_init_time;

init_2_now_time = (unsigned long) t;

remainder = do_div(t, init_2_now_time);

Fixed this by checking for init_2_now_time for zero.

Change-Id: I2bdd22526622327007e52cd93ebbe82fd78e72d2
Signed-off-by: Illyas Mansoor <illyas.mansoor@intel.com>
13 years agoPMU: PMU_SECURITY_LSS_04 and PMU_USB_OTG_LSS_06 can go to proper low power
Fei Yang [Fri, 26 Aug 2011 17:03:08 +0000 (10:03 -0700)]
PMU: PMU_SECURITY_LSS_04 and PMU_USB_OTG_LSS_06 can go to proper low power
     state now after applying the following patches from umg 2.6.35 tree,
     put these two LSS back to the s0i3 checklist.

commit 11724c02b5525f8acb4ba9ab9a6547055b49adb9
Author: Wu, Hao <hao.wu@intel.com>
Date:   Fri Aug 5 01:28:58 2011 +0800

    usb: set pci device state to D0 before run ehci quirks

    BZ:  6580

    As mid_pmu driver will set USB LSS_06 in D0i1 at init, so if
    we didn't get USB back to D0 before run ehci quirks, it will
    cause Fabric error due to controller regsiter access in D0i1.

    Change-Id: I3ba147aecbfac30bcb57629e70919df210405be7
Signed-off-by: Wu, Hao <hao.wu@intel.com>
commit 135189c63e46a39a7ab3951495d03a5e8e9d6ab0
Author: Illyas Mansoor <illyas.mansoor@intel.com>
Date:   Wed Aug 3 15:08:32 2011 +0530

    mid_pmu: remove devices not supporting D0i3 in D0i0

    BZ:  6580

    Earlier we had put all devices that do not support D0i3 in D0i0 state
    after investigation we found that putting USB LSS_06 in D0i1 causes
    this Fabric error.

    This is now fixed, hence removing forcing of D0i0

    Change-Id: If5e3879610a3613472214aa835da35ca32c5c899
Signed-off-by: Illyas Mansoor <illyas.mansoor@intel.com>
Change-Id: I6eecd53c736f07cb1b4f1a86529a8651877dd5ee
Signed-off-by: Fei Yang <fei.yang@intel.com>
13 years agoPMU: patch from umg kernel 2.6.35 tree
Fei Yang [Thu, 25 Aug 2011 21:07:05 +0000 (14:07 -0700)]
PMU: patch from umg kernel 2.6.35 tree

commit d0378332f33fbee63f6e5b5f44dd9b64c53c5525
Author: Bin Gao <bin.gao@intel.com>
Date:   Fri Aug 12 10:44:11 2011 -0700

    mid_pmu: add NC device power island state to mid_pmu debugfs interface

    BZ:  7322

    Currently mid_pmu debugfs interface("mid_pmu_states") only shows
    power state of PCI devices in SC. For NC devices(display, camera,
    etc.), there are just two simple variables display_off and
    camera_off to track the current power status, but for both display
    and camera, there are more than one power islands, for debug purpose,
    we need present all these power islands states to debugfs interface.

    This patch adds:
    GFX, Decoder, Encoder, GL3, Display A/B/C and MIPI-DSI
    island state to gfx/display device(00:02.0), and,
    ISP and Iunit PHY island state to isp device(00:03.0).

    Change-Id: If93f346c16b6a1a39462aff9920167c2e06c32ef
Signed-off-by: Bin Gao <bin.gao@intel.com>
Change-Id: If7f398e032f7b653a39fd91a74cea5be443a562f
Signed-off-by: Fei Yang <fei.yang@intel.com>
13 years agoPMU: Make sure only attempt s0i3 after all CPUs are in C6, otherwise s0i3
Fei Yang [Wed, 24 Aug 2011 22:36:35 +0000 (15:36 -0700)]
PMU: Make sure only attempt s0i3 after all CPUs are in C6, otherwise s0i3
     rarely succeed, because of NO_ACK_C6.
     changes merged from the following commits on umg 2.6.35 kernel tree

Signed-off-by: Fei Yang <fei.yang@intel.com>
commit 80aa40058f0a618c21c02fd2c883ab7dbe22c811
Author: Illyas Mansoor <illyas.mansoor@intel.com>
Date:   Thu Apr 21 15:36:45 2011 -0700

    intel_idle: s0ix support while some cpu offline

    BZ: 1420

    S0ix was not triggered if one of the cpus was put into softoffline
    since the nr_cpus_in_c6 was not getting decremented while the cpus
    go offline, hence it was never maching (nr_cpus-1)

    we changed to (!atomic_add_unless(&nr_cpus_in_c6, 0, (num_online_cpus()-1)))
    to take care of this scenario. S0ix is now working with cpu1 offline.

    Change-Id: If46d3a18e8217e99980ffefd5eea567d41623888
Signed-off-by: Illyas Mansoor <illyas.mansoor@intel.com>
commit dab137cc309b0bf7cee682f5252caa9208905e49
Author: Illyas Mansoor <illyas.mansoor@intel.com>
Date:   Thu Jan 13 22:18:10 2011 +0100

    intel-idle: intel_mid s0ix implementation

    Medfield introduces a new set of System States called System Idle states,
    known as S0ix states. These S0ix states are low power active idle states
    that the platform can be transitioned into and out of.

    The entry into these states is triggered by user inactivity. The platform
    can be restored to normal S0 state only through a wake event - the wake
    event can range from a timer event, to a network related event (on SDIO
    for example), or a event reported by the USB Host controller. Only
    specific components can trigger such wake events.

    PMU stack needs to perform unique actions for entering and exiting S0ix
    states by programming the wake configuration registers in pmu1/pmu2 PMU's
    so that the PMUs can restore the correct component state on a wake event.
    Subsequently, OSPM's PMU driver configures the PMUs to enter the appropriate
    S0ix state.

    System Idle State i1 (S0i1) is a low power sleep state where large portions
    of the entire platform are clock and power gated (depending on the capabilit
    of the subsystem and as determined by OSPM). In this state, CPU core has
    local state retention and on a wake, will start executing at the next
    instruction after the MWAIT instruction which triggered the platform entry
    into S0i1.

    System Idle State i3 (i.e. S0i3) corresponds to a highest latency and lowest
    power system idle state. This is similar to S0i1, except that the CPU core
    does not have local state retention. The state has to be programmatically
    saved to memory by OSPM's PMU driver. Upon exit from this state, the CPU
    will be reset. Memory contents are retained but in low power/self-refresh
    mode in S0i3.

    This patch contains:
    - the core logic of performing the required CPU architectural save and
    restore for S0i3 entry and exit correspondingly.
    - IA-specific assembly code with utilities that save/restore CPU state,
    flushes TLB page and cache, reading/writing MSRs.
    - wake code that IA Firmware jumps to on resuming from S0i3.

    This also changes the existing intel idle driver to add s0ix hooks.

    This code restores the previously saved CPU state and ensures that execution
    can resume from the next instruction after MWAIT that caused the S0i3 entry.

Signed-off-by: Vishwesh M Rudramuni <vishwesh.m.rudramuni@intel.com>
Signed-off-by: Harinarayanan Seshadri <harinarayanan.seshadri@intel.com>
Signed-off-by: Illyas Mansoor <illyas.mansoor@intel.com>
Change-Id: I0140852ede8184283c805928e0aabfc56e7e1773

13 years agoCPUIDEL: Do not check number of substates for any states above C6 as these
Fei Yang [Sat, 20 Aug 2011 02:13:54 +0000 (19:13 -0700)]
CPUIDEL: Do not check number of substates for any states above C6 as these
         are not real C states supported by the CPU, they are emulated c
         states for s0ix support.

Change-Id: I71eaa74a7261c8919be1fa7efe151dce86c800df
Signed-off-by: Fei Yang <fei.yang@intel.com>
13 years agoPMU: Remove global variables used as constant.
Fei Yang [Thu, 18 Aug 2011 00:17:58 +0000 (17:17 -0700)]
PMU: Remove global variables used as constant.
     Add s0i3 support for Medfield.
     Simplify s0i3 logic. mfld_s0i3_enter() enforces c6 so that
     the idle driver doesn't need to call intel_idle after entering
     s0i3.

Change-Id: I64898388fd1a1e18408c39c82bb0b1ed74b1a6f2
Signed-off-by: Fei Yang <fei.yang@intel.com>
13 years agoMID PCI: correct cpu family checking logic
Fei Yang [Thu, 18 Aug 2011 00:05:56 +0000 (17:05 -0700)]
MID PCI: correct cpu family checking logic

Change-Id: Ie54f16165c7cbca8007205f6dac0ce730e7d46da
Signed-off-by: Fei Yang <fei.yang@intel.com>
13 years agohsu: add runtime pm support
Kristen Carlson Accardi [Tue, 9 Aug 2011 13:26:04 +0000 (14:26 +0100)]
hsu: add runtime pm support

Doesn't appear to be much to do here, however having the suspend/resume
functions will allow the d3/d0 transitions to be sent by the pci core.

Signed-off-by: Kristen Carlson Accardi <kristen@linux.intel.com>
Signed-off-by: Alan Cox <alan@linux.intel.com>
13 years agoWAKELOCK: Enable wakelock in PMU driver for Android kernel
Fei Yang [Tue, 16 Aug 2011 22:26:43 +0000 (15:26 -0700)]
WAKELOCK: Enable wakelock in PMU driver for Android kernel

Change-Id: I5a7789f6df35a218359bc4756110c90bcb898f4a
Signed-off-by: Fei Yang <fei.yang@intel.com>
13 years agoTEST mfld pmu: delete constant "ioc" parameter
Len Brown [Fri, 12 Aug 2011 21:46:05 +0000 (22:46 +0100)]
TEST mfld pmu: delete constant "ioc" parameter

We used to ask for interrupts for all LSS commands.
Now we ask for interrupts for NO LSS commands.
In either case the "ioc" parameter is constant.

cleanup only: no functional change

Signed-off-by: Len Brown <len.brown@intel.com>
13 years agoTEST mfld pmu: Replace device power state command locking strategy
Len Brown [Fri, 12 Aug 2011 21:45:47 +0000 (22:45 +0100)]
TEST mfld pmu: Replace device power state command locking strategy

pmu_pci_set_power_state() calls would previously...
acquire semaphore "set_mode_complete_sem",
set global "interactive_cmd_sent",
issue the LSS command with IOC=1.
sleep on "set_mode_complete_sem" semaphore

As IOC was set, pmu_sc_irq() would be invoked,
which would see the global "interactive_cmd_sent"
and signal "set_mode_complete_sem"

This scheme can not work when pmu_pci_set_power_state()
is invoked from interrupt context, where sleeping
is prohibited.

Replace it with the scheme used by mrst_pmu:
pmu_pci_set_power_state() is synchronous -- it waits
for the SCU to be not-busy before and after commands.
Drivers may access devices immediately upon its return.
SMP entry to pmu_pci_set_power_state() is handled
via spinlock.

Signed-off-by: Len Brown <len.brown@intel.com>
13 years agoTEST mfld pmu: enable build
Len Brown [Fri, 12 Aug 2011 21:45:29 +0000 (22:45 +0100)]
TEST mfld pmu: enable build

Signed-off-by: Len Brown <len.brown@intel.com>
13 years agoTEST mfld pmu: prevent Fabric Errors/Boot hang
Len Brown [Fri, 12 Aug 2011 21:44:44 +0000 (22:44 +0100)]
TEST mfld pmu: prevent Fabric Errors/Boot hang

Don't yet know why this hack-around is needed,
but it allows the pmu driver to load on the iCDK w/o killing the system.

Signed-off-by: Len Brown <len.brown@intel.com>
13 years agoTEST mfld pmu: differentiate MRST and MFLD pmu_pci_set_power_state
Len Brown [Fri, 12 Aug 2011 21:44:30 +0000 (22:44 +0100)]
TEST mfld pmu: differentiate MRST and MFLD pmu_pci_set_power_state

It is currently possible to build both MRST and MFLD into the kernel.
So we need to avoid a name conflict,
and bind the right version of pmu_pci_set_power_state().

Signed-off-by: Len Brown <len.brown@intel.com>
13 years agoTEST mfld pmu: sync mid_pci.c from mrst/meego tree
Len Brown [Fri, 12 Aug 2011 21:44:07 +0000 (22:44 +0100)]
TEST mfld pmu: sync mid_pci.c from mrst/meego tree

Signed-off-by: Len Brown <len.brown@intel.com>
13 years agoTEST mfld pmu: add arch/x86/platform/mfld/pmu.c
Len Brown [Fri, 12 Aug 2011 21:43:52 +0000 (22:43 +0100)]
TEST mfld pmu: add arch/x86/platform/mfld/pmu.c

From UMG 2.6.35 tree: arch/x86/kernel/mid_pmu.c

commit 30365108003d6d71f508b5cf4429e9588a5928a0
Author: Fengwei Yin <fengwei.yin@intel.com>
Date:   Mon Jul 11 11:16:33 2011 +0800

    Revert "mid_pmu:  do not issue set_command during s3 entry"

    BZ: 4883

    This reverts commit a49316f33d6066dd13d85f577dce84dd0278d4d0.

    Change-Id: If9a8c696f626a7d6d8fcd42da8e1563a5c1bf4f8
Signed-off-by: Fengwei Yin <fengwei.yin@intel.com>
commit 9f42b0f20930f74e6840a335db62b9089f7176da
Author: Prabu Renganathan <prabu.renganathan@intel.com>
Date:   Fri Jun 17 18:28:36 2011 -0700

    mid_pmu:  pick D0i1 as USB low power state

    BZ: 3497

    HSD: 3337060

    Fix for the Penwell bug where USB only supports D0i1

Signed-off-by: Prabu Renganathan <prabu.renganathan@intel.com>
    Change-Id: Icb0c7c9ffb9889c2de7743ff326f74a9b2ab8771

commit a49316f33d6066dd13d85f577dce84dd0278d4d0
Author: Illyas Mansoor <illyas.mansoor@intel.com>
Date:   Wed Jun 29 13:43:02 2011 +0530

    mid_pmu:  do not issue set_command during s3 entry

    BZ: 4139

    during s3 entry dpm_suspend_noirq will call each of the drivers
    suspend calls and that in turn calls set_power_state() calls,
    we issue an interactive command to SCU and wait for the status
    interrupt this takes a long time until all the devices are suspended.
    This is not required since anyways after the devices are suspended
    we do S3 that puts all the devices in D0i3.

    We just cache the status of all the devices and configure that as
    the wakeup states after S3. This reduces the time to enter S3.

    Change-Id: Ice0f5b326335675890fa60ce6c546693d11d98f2
Signed-off-by: Illyas Mansoor <illyas.mansoor@intel.com>
commit 1df781ef9bbc9b0fc453537da2a3b1861f363138
Author: Illyas Mansoor <illyas.mansoor@intel.com>
Date:   Thu Jun 23 04:58:43 2011 +0530

    mid_pmu:  sparse warnings fixed

    BZ: 3856

    Fixed the following sparse warnings.

    arch/x86/kernel/mid_pmu.c:302:18: warning: symbol 'pmu_wake_lock' was not declared. Should it be static?
    arch/x86/kernel/mid_pmu.c:1126:15: warning: symbol 'pmu_get_cstate' was not declared. Should it be static?
    arch/x86/kernel/mid_pmu.c:1813:3: warning: symbol 'medfield_lsses' was not declared. Should it be static?
    arch/x86/kernel/mid_pmu.c:1874:5: warning: symbol 'medfield_lsses_num' was not declared. Should it be static?
    arch/x86/kernel/mid_pmu.c:1876:6: warning: symbol 'lss_device_status' was not declared. Should it be static?
    arch/x86/kernel/mid_pmu.c:2368:5: warning: symbol 'mid_suspend' was not declared. Should it be static?

    fixed make namespacecheck issues.

    Change-Id: I7731a0391b1433a7ecfa28bdd3265591d1389495
Signed-off-by: Illyas Mansoor <illyas.mansoor@intel.com>
commit c68b6b1636a4b898773a05a5651839806dd3314c
Author: Laurent Kappel <laurentx.kappel@intel.com>
Date:   Wed Jul 6 20:22:10 2011 +0200

    Revert "mid_pmu:  s0i1 lpmp3 s0i3 s3 automatic selection"

    This reverts commit e899b6438b842047bef1bbdfdf9188bd09fab447.

    Change-Id: I7d51be7532056ff81d89ce0bc2af8480ffc812ea
Signed-off-by: Laurent Kappel <laurentx.kappel@intel.com>
commit e899b6438b842047bef1bbdfdf9188bd09fab447
Author: Illyas Mansoor <illyas.mansoor@intel.com>
Date:   Fri Jun 17 10:13:31 2011 +0530

    mid_pmu:  s0i1 lpmp3 s0i3 s3 automatic selection

    BZ: 2457

    Automatically select s0i1, lpmp3, s0i3 or S3 does'nt happen currently,
    it is based on "echo s0i1/3 > /sys/modules/mid_pmu/parameters/s0ix"

    changed this to automatically select s0ix/lpmp3/s3 based on cpuidle
    latency and wakelocks.

    Change-Id: I5f3eef919aaac90d44e0d6ef0502c86f38da3ba2
Signed-off-by: Illyas Mansoor <illyas.mansoor@intel.com>
commit 54f32f953f356027c774c3cf46462992eadc73a7
Author: Pierre Tardy <pierre.tardy@intel.com>
Date:   Tue Jun 28 10:51:29 2011 +0200

    REVERTME:mid_pmu: deactivate S3 on PR2

    BZ: 4177

    quite a lot of patches are pending to enable S3 on PR2.
    Waiting for that we disable S3 by default on PR2

    to be reverted as soon as PR2 drivers are S3 capable

    Change-Id: I4de53e978fe850303617f8ace4ab9f073ce64d89
Signed-off-by: Pierre Tardy <pierre.tardy@intel.com>
commit 5e73c57d106f8c766a5a06221e2817a7c9a5b393
Author: Rajesh Poornachandran <rajesh.poornachandran@intel.com>
Date:   Thu Jun 16 16:59:39 2011 -0700

    Revert "Revert "mid_pmu: Moving NC power management logic to OSPM""

    BZ: 1957

    Currently the PM for north complex was done independently by Gfx and ISP drivers.
    There was no synchronization between ISP and Gfx while sending the PM cmd.

    OSPM patch to provide an API, pmu_nc_set_power_state. This API will take care
    of talking to P-unit and getting the corresponding power islands to ON/OFF.
    Gfx and ISP drivers need to use this API in their drivers.

    Change-Id: I628dd8b03f5d09607e3c931e29943fcdb73613cb
Signed-off-by: Sujith Thomas <sujith.thomas@intel.com>
Signed-off-by: Rajesh Poornachandran <rajesh.poornachandran@intel.com>
commit 3b40317a7924fd4277b06992ea8755fe4d39094f
Author: Illyas Mansoor <illyas.mansoor@intel.com>
Date:   Wed Jun 22 03:58:51 2011 +0530

    mid_pmu:  camera blocks s0ix when camera driver not present

    BZ: 3762

    With Camera driver removed we are not able to enter s0i1/3 S3, this is because
    the camera_off variable will be '0' even if the driver is not configured.

    conditionally set the variable '1' if camera device is not configured.

    Change-Id: Ia582399c8f3f493255e387a1a8ec0612fc6b50d0
Signed-off-by: Illyas Mansoor <illyas.mansoor@intel.com>
commit dd6db50f98b6c0d368b9315124b65ec3b1aae2a1
Author: Erwan Mahe <erwanx.mahe@intel.com>
Date:   Thu Jun 23 18:29:21 2011 +0200

    Revert "Revert "mid_pmu: pick correct D0ix states in choose_state""

    BZ: 2102
    This reverts commit 41ff42ea4b74c89d7ed44b51e46ab7ae45b4b87c.

    Change-Id: I5aa5658cf28696a3c79a939ea8644a3b3c4d73f0

commit 41ff42ea4b74c89d7ed44b51e46ab7ae45b4b87c
Author: Marie-Celine Dubut <marie.celinex.dubut@intel.com>
Date:   Wed Jun 22 12:44:06 2011 +0200

    Revert "mid_pmu: pick correct D0ix states in choose_state"

    BZ 2102
    This reverts commit c60a2ae1f8b33abdabbff9c0de5a57ec6588df9d.

    Change-Id: I7e7aed5071adabc824c303628ba855031892e70a

commit c60a2ae1f8b33abdabbff9c0de5a57ec6588df9d
Author: Illyas Mansoor <illyas.mansoor@intel.com>
Date:   Wed Jun 1 13:19:54 2011 +0530

    mid_pmu: pick correct D0ix states in choose_state

    BZ: 2102

    currently pmu_pci_choose_state return PCI_D3hot for all devices.
    For some of devices, it may not be possible to support PCI_D3hot state.
    eg., HSU needs to be put in D0i1, chaabi needs to be put in
    D0i2. It is not appropriate to always choose D0i3 for all devices

    We choose the correct state that is appropriate for each device
    for the  platform.

    This patch should be used only with a FW that is capable of supporting
    Chaabi D0i2.

    Change-Id: Ief7b64bc1ec37d4452ce3222454bdd6102d54c10
Signed-off-by: Illyas Mansoor <illyas.mansoor@intel.com>
commit c4e73f14acb7ffd39a5d965fc23b1f01673363b8
Author: Hari Kanigeri <hari.k.kanigeri@intel.com>
Date:   Fri Jun 3 11:27:13 2011 -0600

    mid_pmu: fix checkpatch violations and some cleanup in exit paths

    BZ: 3066

    Fix the following:

    1. Checkpatch violations and cosmetic changes.
    2. fix correct cleanup in the exit paths of the function mid_pmu_probe

    Below log is related to checkpatch violations.

    1. Checkpatch violations
    =========================

    ERROR: space required before the open parenthesis '('
    + if(pdev->device == 0x81c || pdev->device == 0x81b)

    WARNING: line over 80 characters
    + for (i = 0; i < PMU_MAX_LSS_SHARE && intel_mid_pci_devices[index].dev_driver[i]; i++) {}

    ERROR: trailing statements should be on next line
    + for (i = 0; i < PMU_MAX_LSS_SHARE && intel_mid_pci_devices[index].dev_driver[i]; i++) {}

    WARNING: braces {} are not necessary for single statement blocks
    + for (i = 0; i < PMU_MAX_LSS_SHARE && intel_mid_pci_devices[index].dev_driver[i]; i++) {}

    WARNING: line over 80 characters
    +static pci_power_t  pmu_pci_get_weakest_state_for_lss(int lss_index, struct pci_dev *pdev, pci_power_t state)

    <cut here for brewity, please run checkpatch to see a complete list>

    total: 122 errors, 14 warnings, 2340 lines checked

    Change-Id: I1cdbd6a8b70d303611f0cd426ce63235010d0a07
Signed-off-by: Hari Kanigeri <hari.k.kanigeri@intel.com>
Signed-off-by: Illyas Mansoor <illyas.mansoor@intel.com>
commit 3df93729faabfefb971badf3b51f8e652da3f288
Author: Illyas Mansoor <illyas.mansoor@intel.com>
Date:   Mon Jun 13 01:52:20 2011 +0530

    mid_pmu: abort s0i3 c6offload write access not set

    BZ: 3356

    OSPM waits (busy loop) for "write access" to C6 Offload area to be granted by
    SCU. After sending S0ix command to SCU via the PM_CMD reg.

    In current OSPM code we clear "enable MSR" bit if we find c6 offload "write
    access" bit is not set, c6 offload wont happen, a c6 will still be issued. This
    will trigger ack_c6, but in this case SCU will check offload signature to
    makesure if offload has occurred, since it won't find the offload signature it
    should abort s0ix entry.

    We have busy loop'd considerable amount of time waiting for c6 "write
    access" bit to be set we may have overshot the c6 latency, hence it is better
    to demote the c6 to a c4.

    Change-Id: Ie0027ff4efb8a418a7377ba30eb6a20d0a74087c
Signed-off-by: Illyas mansoor <illyas.mansoor@intel.com>
commit 4405feeea2eef28c40bda0e29817ee5ea223abe5
Author: MingmingX Zhang <mingmingx.zhang@intel.com>
Date:   Mon Jun 13 10:05:08 2011 +0800

    mid_pmu: delete repeated WARN in function mfld_s0i3_enter function

    BZ: 3346

    In function mfld_s0i3_enter, there are 2 WARN to check the same
    error status. Delete the needless WARN_ON.

    Change-Id: I8ba7cdab1eedf4bebdd3bfa599e3db795c56bdb0
Signed-off-by: MingmingX Zhang <mingmingx.zhang@intel.com>
commit d332d4a59c01e1774cd4fdc28d97fe4d865989ee
Author: Vishwesh M Rudramuni <vishwesh.m.rudramuni@intel.com>
Date:   Thu Feb 16 22:36:00 2006 +0530

    pmu: adding atomisp as part of entry criterion for S0i3

    BZ: 1339

    In current build we dont look at the isp runtime status before
    we enter S0i3 state. In this patch we check for the camera status
    in addition to all other device states that we check today in S0i3.

    Change-Id: If3f024fa22d0d744160b961e637e2b1c25e5e1c9
Signed-off-by: Vishwesh M Rudramuni <vishwesh.m.rudramuni@intel.com>
commit 397b53b9679edd28669876fbbb528a4f3a0daa7f
Author: Illyas Mansoor <illyas.mansoor@intel.com>
Date:   Wed Jun 1 23:33:33 2011 +0530

    mid_pmu: adding s0ix first_entry time and residency

    BZ: 2709

    Earlier mid_pmu stats did'nt have first entry time and
    residency percentages. Also clear option was not available.

    Implemented the same.

    In order to clear pmu_stats please use the following command
    mount -t debugfs none /d
    echo "clear" > /d/mid_pmu_states

    Change-Id: I4f24272a11b017d0decdb875880e0bc27eb6bf18
Signed-off-by: Sudharshan Ramachandra <sudarshan.n.ramachandra@intel.com>
Signed-off-by: Illyas Mansoor <illyas.mansoor@intel.com>
commit 71fd1c6ca28e68e7d3b8279a594bd51296e8be79
Author: Erwan Mahe <erwanx.mahe@intel.com>
Date:   Tue Jun 7 18:22:06 2011 +0200

    mid_pmu: s3/S0i3 automatic selection

    BZ: 2457

    Once the screen saver times out system would do few cycles of S0i3
    untill all the wakelocks are released then system will enter S3.This
    will avoid echo s0i1/3/x > /sys/module/mid_pmu/parameter/s0ix. This
    patch also increases the wakelock timeout for mid_pmu wakelock taken
    at end of s3 to 1 sec.

    Revert "Revert "mid_pmu: s3/S0i3 automatic selection""
    => Reinstate initial commit

    This reverts commit 21b136056afcfe32626a76ce2a3afe653a860c55.

    Change-Id: I19e2580bddc656c6ae809a6e1331bedc8579531b
Signed-off-by: Erwan Mahe <erwanx.mahe@intel.com>
commit 21b136056afcfe32626a76ce2a3afe653a860c55
Author: Erwan Mahe <erwanx.mahe@intel.com>
Date:   Mon Jun 6 21:01:26 2011 +0200

    Revert "mid_pmu: s3/S0i3 automatic selection"

    This reverts commit c589050d2d9a90b0a6a334f57c9008c630fb24f1.

    Change-Id: I7e09f304b2eadffb27e83ab810c8a2edb8044fbd
Signed-off-by: Erwan Mahe <erwanx.mahe@intel.com>
commit c589050d2d9a90b0a6a334f57c9008c630fb24f1
Author: Vishwesh M Rudramuni <vishwesh.m.rudramuni@intel.com>
Date:   Mon Jun 6 10:38:11 2011 +0530

    mid_pmu: s3/S0i3 automatic selection

    BZ: 2457

    Once the screen saver times out system would do few cycles of S0i3
    untill all the wakelocks are released then system will enter S3.This
    will avoid echo s0i1/3/x > /sys/module/mid_pmu/parameter/s0ix. This
    patch also increases the wakelock timeout for mid_pmu wakelock taken
    at end of s3 to 1 sec.

    Change-Id: I5fc8e13ff0873d6dadd918ad8eabdaa0001e0950
Signed-off-by: Vishwesh M Rudramuni <vishwesh.m.rudramuni@intel.com>
commit 5e7997d26409e1e0f92c22c71b34fdcc4221e862
Author: Olivier Monnier <olivierx.monnier@intel.com>
Date:   Fri Jun 3 11:28:01 2011 +0200

    Revert "mid_pmu: s3/S0i3 automatic selection"

    This reverts commit f3ae17eb792bab5ab9bd5adcb0c5385cf9722c60.

    Change-Id: I2186fa8813677fcec6bf981c97aaf75dcff5ad5b
Signed-off-by: Olivier Monnier <olivierx.monnier@intel.com>
commit f3ae17eb792bab5ab9bd5adcb0c5385cf9722c60
Author: Vishwesh M Rudramuni <vishwesh.m.rudramuni@intel.com>
Date:   Thu May 26 15:48:28 2011 +0530

    mid_pmu: s3/S0i3 automatic selection

    BZ 2457

    Once the screen saver times out system would do few cycles of S0i3
    untill all the wakelocks are released then system will enter S3.This
    will avoid echo s0i1/3/x > /sys/module/mid_pmu/parameter/s0ix

    Change-Id: I7cb82c3bb519d769f1905632e7066985676bffef
Signed-off-by: Vishwesh M Rudramuni <vishwesh.m.rudramuni@intel.com>
commit 53f93b022da79eadc22a2ac5c3adade98380cf84
Author: Illyas Mansoor <illyas.mansoor@intel.com>
Date:   Mon May 16 00:26:13 2011 +0530

    mid_pmu: demote c6 to c4 while s0ix is in progress

    BZ: 2120

    While S0ix aborts SCU waits for Ack_C6 timeout, IA comes out of
    mwait and since the SCU is still waiting for Ack_C6 the S0ix
    ACK_C6 timeout error interrupt is not recieved, meanwhile a new
    C6 could be triggered from IA and this could trigger a Ack_C6
    SCU can mistake this Ack_C6 as a ack for the previously aborted
    S0ix and continue S0ix flow. This is not correct.

    We check if the system is in S0ix progress state by checking
    scu_ready_sem if its already acquired that means S0ix is in
    progress and the subsequent C6 should be demoted to C4's

    Change-Id: I1b60824b28f9b6579dd551faa8fe485d2074b712
Signed-off-by: Illyas Mansoor <illyas.mansoor@intel.com>
commit 654da78fa8f45bcf4d64d9c0ea115d589f4374c4
Author: Illyas Mansoor <illyas.mansoor@intel.com>
Date:   Sun May 15 23:44:23 2011 +0530

    mid_pmu: c6 offload msr bit cleanup

    BZ: 2116

    We were using magic number for wmsr(0x120) for setting/clearing
    offload bit.

    Fixed this by creating #defines

    Change-Id: I5fe4ec0568e48d12fe30074f8eebbc2a6411b4d8
Signed-off-by: Illyas Mansoor <illyas.mansoor@intel.com>
commit 516322a23d3e7b1606d83753b121de66e79daa20
Author: Illyas Mansoor <illyas.mansoor@intel.com>
Date:   Mon May 16 11:09:48 2011 +0530

    mid_pmu: releasing scu_ready_sem in mfld_s3_enter

    BZ: 2179

    In function mfld_s3_enter we are checking if scu_ready_sem is already acquired.
    The intention is to make sure we enter S3 only if scu_ready_sem is free, but if
    its acquired instead of returning error we release the scu_ready_sem which is
    incorrect.

    removed the release of scu_ready_sem, if already acquired.

    Change-Id: I4ce888ae1702e4cdcb8dd584a87d0d10fb6c84db
Signed-off-by: Illyas Mansoor <illyas.mansoor@intel.com>
commit 8118849a0329d0e73761562443ae25c8b1cd3bf9
Author: Fengwei Yin <fengwei.yin@intel.com>
Date:   Sun May 22 11:57:12 2011 +0800

    Revert "mid_pmu:  Moving NC power management logic to OSPM"

    BZ: 2470

    This reverts commit 594c7f0327dd02985fbcde1e0bd83c98e684097f.

commit 594c7f0327dd02985fbcde1e0bd83c98e684097f
Author: Sujith Thomas <sthoma3@umg-lab1.iind.intel.com>
Date:   Thu May 12 10:51:38 2011 +0530

    mid_pmu:  Moving NC power management logic to OSPM

    BZ: 1957

    Currently the PM for north complex was done independently by Gfx and ISP drivers.
    There was no synchronization between ISP and Gfx while sending the PM cmd.

    OSPM patch to provide an API, pmu_nc_set_power_state.
    This API will take care of talking to P-unit and getting the corresponding power
    islands to ON/OFF. Gfx and ISP drivers need to use this API in their drivers.

    Change-Id: I302c9a7a6bb10ae572d340affb2502443d6178fc
Signed-off-by: Sujith Thomas <sujith.thomas@intel.com>
commit abfc3b5f6d6df8a5d5985c73f99a8dc72cd18853
Author: Pierre Tardy <pierre.tardy@intel.com>
Date:   Mon May 16 16:49:50 2011 +0200

    Revert "Revert "Revert "REVERTME:mid_pmu: disable s0i3 by default for HSI IFWIs"""

    BZ: 2177

    This reverts commit eefaf8d45186b6ad465e67fb31cb4293c0a7a5fa.
    and re-enable s0i3 by default on HSI based IFWI

    Change-Id: Ib0289dcb5ef60b7750267aebb53f1bf38ab4ee3d
Signed-off-by: Pierre Tardy <pierre.tardy@intel.com>
commit 50154e4edbe93d9d0d72e3b318cbe83b7e21831a
Author: Pierre Tardy <pierre.tardy@intel.com>
Date:   Mon May 16 13:32:44 2011 +0200

    mid_pmu: add more trace_printk

    BZ: 2139

    in order to see wake sources, and errors from s0i3 and s3

    Change-Id: If5d6ea297dde5d47ed79583c188d8457bb978076
Signed-off-by: Pierre Tardy <pierre.tardy@intel.com>
commit 47f329c5a5a244636b7805b991d6ba5e1e8c7bd7
Author: Vishwesh M Rudramuni <vishwesh.m.rudramuni@intel.com>
Date:   Mon May 16 09:29:28 2011 +0530

    pmu: fixing the aont mask fix for S3

    BZ 1756

    aont mask set for s3 was not proper which was not allowing to stay
    in S3. this patch fixes the mask.

    Change-Id: I8dc5a9372054d83a17184d289ea9ae7a621388bc
Signed-off-by: Vishwesh M Rudramuni <vishwesh.m.rudramuni@intel.com>
commit c52543cfc2fbade1fac03796c2b0615141e46cea
Author: Illyas Mansoor <illyas.mansoor@intel.com>
Date:   Tue May 10 12:00:08 2011 +0530

    mid_pmu: fix incorrect residency for abort s0ix

    BZ: 1885

    In case of S0ix/Lpmp3 aborts for any reason we are still counting the
    residency times, in case of failure we should not account this time
    into actual s0ix/lpmp3 residency times.

    corrected this by only accumulating times for successful s0ix exits.

    Change-Id: Icdde3491fe786aec4c65795805bfec43d9c107f4
Signed-off-by: Illyas Mansoor <illyas.mansoor@intel.com>
commit e0c7284d712fdc0715726ad1dc7df4ac6e9b18c9
Author: Vishwesh M Rudramuni <vishwesh.m.rudramuni@intel.com>
Date:   Tue May 10 16:45:05 2011 +0530

    pmu: adding ignore wkc lss code needed for long s3

    BZ 1756

    This patch we add ignore wkc lss to add all those devices
    which needs to be ignored as wake sources during entry to s3
    state.

    Change-Id: I73a46d23f3bee2ef8d979162a4d1b6a020fe4bae
Signed-off-by: Vishwesh M Rudramuni <vishwesh.m.rudramuni@intel.com>
commit cba613f2bde66236706b9c0ba7f1fe6b5ff14ad7
Author: Vishwesh M Rudramuni <vishwesh.m.rudramuni@intel.com>
Date:   Tue May 10 16:22:10 2011 +0530

    pmu:  renaming lss after new wkc implementation in scu

    BZ 1756

    This patch we are re assigning some of the lss to new lss
    based on the WKC implementation in scu.

    Change-Id: Ic7a9adf37194182b424dcdcc0d61cb09bba4a7a5
Signed-off-by: Vishwesh M Rudramuni <vishwesh.m.rudramuni@intel.com>
commit 43ea3ecf3ba252e6859f33d38d9c2bcd0e2c6f06
Author: Jean-Pierre Stierlin <jean-pierrex.stierlin@intel.com>
Date:   Fri Apr 29 11:01:35 2011 +0200

    mid_pmu: Disable S0i3 when HSI is not in D0i3

    BZ: 1226

    The platform should not enter S0i3 state when the HSI is still active

    Add PMU_HSI_LSS_03 to the s0ix_lss and lpmp3_lss tables

    Change-Id: I8ccddaa12d04b0af813820dad19fa96de7fe5e53
Signed-off-by: Jean-Pierre Stierlin <jean-pierrex.stierlin@intel.com>
commit eefaf8d45186b6ad465e67fb31cb4293c0a7a5fa
Author: Erwan Mahe <erwanx.mahe@intel.com>
Date:   Thu May 5 12:12:04 2011 +0200

    Revert "Revert "REVERTME:mid_pmu: disable s0i3 by default for HSI IFWIs""

    This reverts commit a561e8620d08973fd5f9eea6a91488977fc3b539.

commit a561e8620d08973fd5f9eea6a91488977fc3b539
Author: Erwan Mahe <erwanx.mahe@intel.com>
Date:   Wed May 4 11:24:08 2011 +0200

    Revert "REVERTME:mid_pmu: disable s0i3 by default for HSI IFWIs"

    BZ: 1646

    This reverts commit 18a41ce2756933e6200e05283e3ea172c7aa320d.

commit d7a22f9c70e926ebe0bdb78a79153a5b8050a864
Author: Christophe Fiat <christophex.fiat@intel.com>
Date:   Thu Apr 28 14:55:45 2011 +0200

    mid_pmu: Add HSU in PMU Devices list blocking S0i3

    BZ: 932 - Taskforce: Mtfld-Android No Driver with D3/D0i3 for UART0

    Now that HSU is RT PM compliant, HSU can block s0i3 from happening when
    Bt active.

    put HSU LSS in the list of s0i3 and lpmp3 required lss.

    Change-Id: I0a4be909433b470b0b1dfa021fcc997d200cd835
Signed-off-by: Christophe Fiat <christophex.fiat@intel.com>
Signed-off-by: Pierre Tardy <pierre.tardy@intel.com>
commit 2f408985f4aeeb807ff095f0e86669fc6a6b14aa
Author: Vishwesh M Rudramuni <vishwesh.m.rudramuni@intel.com>
Date:   Wed Apr 20 23:30:00 2011 +0530

    pmu: fixing wake sub system configuration on s3 exit

    wake sub system configuration was being set to D0 state
    on exit from S3. this is being reverted to state of devices
    before entering S3 to follow the same path as S0i3 flow.

    Change-Id: Ia6276b151b303912469511a5d1378e39b63d43b4
Signed-off-by: Vishwesh M. Rudramuni <vishwesh.m.rudramuni@intel.com>
commit 96045de5b1e64969513c05f103d2db0d63c43b83
Author: Illyas Mansoor <illyas.mansoor@intel.com>
Date:   Fri Apr 15 22:58:54 2011 +0530

    mid_pmu: change function name read_all_lss_states

    read_all_lss_states reads the current runtime_pm status of
    each SCU mapped pci driver and updates the current_status
    on to the corresponding LSS.

    The name leads to confusion since it implies reading of LSS
    regs which is not the case.

    Hence changing the name to update_all_lss_states

    Change-Id: I4f87b6e62f619db6ae07538a5a88ca70bf47c6aa
Signed-off-by: Illyas Mansoor <illyas.mansoor@intel.com>
commit 5d31bc498ade6f0ae46dad8298005724a0927ae2
Author: Illyas Mansoor <illyas.mansoor@intel.com>
Date:   Thu Apr 14 00:05:28 2011 +0530

    [HSD:3743029] mid_pmu: hack: fix HSI lss not found in pci_table issue

    HSI drivers D0ix requested were not propogated to SCU
    on examination it was found that IA fw does not have
    the required driver to LSS mapping, hence the requests
    were skipped in PMU driver.

    Added a hack to fix this in PMU driver, revert this
    once IA FW fixes this issue.

    Change-Id: Iff5be2fa6a46dbd94dee787011b79ec347dcbaf3
Signed-off-by: Illyas mansoor <illyas.mansoor@intel.com>
commit 18a41ce2756933e6200e05283e3ea172c7aa320d
Author: Pierre Tardy <pierre.tardy@intel.com>
Date:   Thu Apr 21 17:51:38 2011 +0200

    REVERTME:mid_pmu: disable s0i3 by default for HSI IFWIs

    HSI runtime_pm is not yet ready.
    device will go s0i3 even if there is HSI activity
    This causing lot of fabric errors.

    We disable s0i3 by default if we find HSI device (0x833)
    in the pci table.

    to be reverted as soon as HSI runtime_pm is ready.

    Change-Id: I9877c48ea78f0ea80528869ce978fb575385e621
Signed-off-by: Pierre Tardy <pierre.tardy@intel.com>
commit 16a0bab0a9b9ae6cbcc4ec826315ef1d87cdc25d
Author: Vishwesh M Rudramuni <vishwesh.m.rudramuni@intel.com>
Date:   Thu Apr 7 15:01:02 2011 +0530

    mid_pmu: enable full suspend to RAM (S3) (path#1)

    Enabling full suspend path in the pmu driver.

    use IRQF_NO_SUSPEND to keep irq alive during s3 path
    while we are at it removed unused irq parameter

    Changed the s0i3 wake lock in a timed wake lock for wakeup.
    This wakelocks stays locked until someone writes
    echo "s3s3" >/sys/modules/mid_pmu/parameters/s0ix
    So that system will still default to s0i3 until s3 is
    ready for everybody

    this patch also updates the s3 statistics.

    Change-Id: Ic496f3d96e70e9d37370413d9019e9a451d1b9c6
Signed-off-by: Vishwesh M. Rudramuni <vishwesh.m.rudramuni@intel.com>
Signed-off-by: Pierre Tardy <pierre.tardy@intel.com>
commit 1ec1299dd7c6854d9902640592003ec508f53bfc
Author: Pierre Tardy <pierre.tardy@intel.com>
Date:   Tue Apr 12 10:52:43 2011 +0200

    mid_pmu: add more powerfull s0ix statistics

    Current statistics only do s0ix entry count

    This adds timing statistics.
    This is mainly intended for automated tests, in order to make
    automated test have time spend in s0ix, and be able to do regressions
    over daily builds.

    There is also placeholder for s3 statistics that is not yet implemented.

    Change-Id: Ib2eed8e87f66c4efe8ca52767a76021576040333
Signed-off-by: Pierre Tardy <pierre.tardy@intel.com>
commit bdb518ae8e9af2a27857cad22b6650b0bd20d9c8
Author: Pierre Tardy <pierre.tardy@intel.com>
Date:   Fri Apr 8 17:26:27 2011 +0200

    mid_pmu: suspend devices not in pci-table

    We suspend devices that are in the target config, and that are
    not in the pci table

    Some devices are indeed not advertised in pci
    table for certain firmwares. This is the case for HSI firmwares,
    SPI3 device is not advertised, and would then prevent s0i3.

    Change-Id: I319fcb8fe6ee3fa4a8272d2f2389aa4804a99699
Signed-off-by: Pierre Tardy <pierre.tardy@intel.com>
commit 09bfcd007dd40dcead807525203baffe1371bb41
Author: Pierre Tardy <pierre.tardy@intel.com>
Date:   Wed Mar 2 18:35:03 2011 +0100

    mid_pmu/android: take a wakelock if s0i3 is not possible

    Change-Id: Icc3b1509873d76ad8afb63f04a8e52025c6c5c10

commit 3452915bdf4a946d0b969e646f00f2205a3b71b2
Author: Liu, ShuoX <shuox.liu@intel.com>
Date:   Tue Mar 15 11:37:26 2011 +0800

    modify s0ix default val for s0i3 debug

    Change-Id: I9ca88d1420768702b6550039d8313b61dafc5788

commit cfda66e44bc142f836c2e550211997759aa0d8e2
Author: Illyas Mansoor <illyas.mansoor@intel.com>
Date:   Wed Mar 30 16:23:28 2011 +0530

    mid_pmu: cleanup added explicit LSS ids for s0ix entry

    Currently the LSS that need to be checked for S0ix/LPMP3
    entry is hardcoded making it difficult to read the sub
    system values.

    Added #defines for all the sub system LSS id's, using this
    defined the target config values to check against the SSS
    register values, that tells which subsystems need to in D0i3
    to issue S0i1/3 or LPMP3 commands.

    Also added a way to keep always ON LSS to be in D0i0.

    Added check for Keyboard, UART0/1/2 LSS in S0i1/lpmp3/S0i3 SSS
    config registers.

    Removed LSS 40, 41 from ignore_lss list.

    Change-Id: Ifd28b58f11c66232dc2993b3946c672bbe9931a3
Signed-off-by: Illyas Mansoor <illyas.mansoor@intel.com>
commit 4e082fe683a0d9b22b9ef0c6675705ba75a7dceb
Author: Illyas Mansoor <illyas.mansoor@intel.com>
Date:   Wed Mar 30 16:22:21 2011 +0530

    mid_pmu: update current driver status during first interactive command

    At the time of pmu driver initialization we set all the LSS to be in D0i0
    state, this causes some of the drivers to be in forced D0i0 state in
    SCU, whereas there actual state could be D0i3, hence there could be
    potential power impact until next cycle of D0i0->D0i3 from the driver.

    To avoid this we acquire the lock, allow drivers to get blocked in
    pmu_pci_set_power_state(), then reflect the current driver state in
    SCU for all SCU managed drivers via setting the appropriate LSS values
    by issuing interactive command.

    This will ensure we reflect correct driver state during pmu driver
    initialization.

    Change-Id: I01caf76d6a32b38a556e7309457ab0e829b5dca4
Signed-off-by: Illyas Mansoor <illyas.mansoor@intel.com>
commit a1e3d9fd3db6a395f9f45a233fc4a757e610700c
Author: Illyas Mansoor <illyas.mansoor@intel.com>
Date:   Wed Mar 30 16:21:47 2011 +0530

    mid_pmu: added some counters

    Added counter to keep track of number of S0ix
    and error counts.

    Change-Id: I20d55781038a4732e50f98e0163eada394450702
Signed-off-by: Illyas Mansoor <illyas.mansoor@intel.com>
commit 37c03045efcd790183acdbd3cb94db59566bdb6d
Author: Pierre Tardy <pierre.tardy@intel.com>
Date:   Mon Mar 21 14:47:53 2011 +0100

    mid_pmu: allow several devices to be on the same lss

    HSU devices are in HW in the same lss.
    There is a workaround in IAFW, that will not advertise the correct lss
    for HSU0 and HSU1. This does not solve anything, as HSU0 driver will start
    to make fabric errors as soon as HSU2 is suspended.

    We generically solve the issue by maintaining a table of devices
    present in the same lss. For such very short list, we do not take the
    overhead of using linked list. but rather use a 4 slots table for each lss.

    This patch contains ss hardcode for HSU0 and HSU1. To be removed when
    IAFW remove the bad workaround.

    Change-Id: I11240c225edc92984cca7e5e176bbebab6df2d5d
Signed-off-by: Pierre Tardy <pierre.tardy@intel.com>
commit aa7111008d6f823807dd117b4384ba66415eff40
Author: Illyas Mansoor <illyas.mansoor@intel.com>
Date:   Fri Mar 18 12:10:59 2011 +0530

    mid_pmu: hack: replace lss 16 with 9

    IA FW is reporting Audio DMA subsytem id as 16, whereas it should report 9
    fixed this in the code, need to remove this once IA FW fixes this.

    Change-Id: I22b6bc9e425b43dae00233fd43b7bcf756c62c8b
Signed-off-by: Illyas Mansoor <illyas.mansoor@intel.com>
commit feef0283493d0309bcf6c2021807e0150dc079d9
Author: Yanmin Zhang <yanmin.zhang@intel.com>
Date:   Tue Mar 8 16:18:49 2011 +0800

    Add a new interface under debugfs, pmu_sss_states, to output pmu sss registers. We could use it to check every subsystem state. mid_pmu_states saves device (subsystem) states intercepted by pci_set_power_state, while pmu_sss_states gets the states from pmu hardware registers.

    Change-Id: If0d9cb3b4286d1ea89064d9b94df29ed1ae2f7fa

commit fb7d10c9d7ba74245c1e14b739d207c920dab637
Author: mgross <mark.gross@intel.com>
Date:   Thu Mar 3 10:34:48 2011 +0800

    revert me asap block suspend to ram with wakelock

    Change-Id: I89812515397690f6dc99446a0f04c15bf2ac567e
Signed-off-by: mgross <mark.gross@intel.com>
commit 0d15acc903de50173abffbc8e7830749e46c4ef6
Author: mgross <mark.gross@intel.com>
Date:   Mon Feb 28 15:18:46 2011 -0800

    Stub to enable pm_suspend and android early suspend calls to start
    working.
    With this change (and the propper config file) you can enter early
    suspend and start enabling android power managment.

    Change-Id: I80c10a33f8fc80221502761175ed372a379ae779

commit 0c2cb76662387a575c6f41b9f91a85cd76064f55
Author: Illyas Mansoor <illyas.mansoor@intel.com>
Date:   Sat Feb 5 14:52:41 2011 +0100

    mid_pmu: cleanup: fix sparse check warnings

    moved all #defines to mid_pmu.h

    fixed warnings after installing sparse tool

    Fixed the following warnings from sparse.
    with make C=2 >& sparse.log command.

    arch/x86/kernel/mid_pmu.c:46:3: warning: symbol 'pci_dev_index' was not declared. Should it be static?
    arch/x86/kernel/mid_pmu.c:1175:70: warning: incorrect type in argument 2 (different address spaces)
    arch/x86/kernel/mid_pmu.c:1175:70:    expected void volatile [noderef] <asn:2>*addr
    arch/x86/kernel/mid_pmu.c:1175:70:    got unsigned int *
    arch/x86/kernel/mid_pmu.c:1180:76: warning: incorrect type in argument 2 (different address spaces)
    arch/x86/kernel/mid_pmu.c:1180:76:    expected void volatile [noderef] <asn:2>*addr
    arch/x86/kernel/mid_pmu.c:1180:76:    got unsigned int *
    arch/x86/kernel/mid_pmu.c:322:5: warning: symbol 'get_target_platform_state' was not declared. Should it be static?
    arch/x86/kernel/mid_pmu.c:691:6: warning: symbol 'mfld_s0i1_enter' was not declared. Should it be static?
    arch/x86/kernel/mid_pmu.c:717:5: warning: symbol 'mfld_s0i3_enter' was not declared. Should it be static?
    arch/x86/kernel/mid_pmu.c:844:5: warning: symbol 'is_msi_enabled' was not declared. Should it be static?
    arch/x86/kernel/mid_pmu.c:1191:59:    got unsigned int *
    arch/x86/kernel/mid_pmu.c:1502:13: warning: incorrect type in assignment (different address spaces)
    arch/x86/kernel/mid_pmu.c:1502:13:    expected struct mrst_pmu_reg *pmu
    arch/x86/kernel/mid_pmu.c:1502:13:    got void [noderef] <asn:2>*
    arch/x86/kernel/mid_pmu.c:1567:27:    expected void [noderef] <asn:2>*<noident>
    arch/x86/kernel/mid_pmu.c:1567:27:    got struct mrst_pmu_reg *static [toplevel] *<noident>
    ...
    and similar warnings.

Signed-off-by: Illyas Mansoor <illyas.mansoor@intel.com>
commit cf3aa8b17adab4006d49f01aa66bd184f9598eb8
Author: Illyas Mansoor <illyas.mansoor@intel.com>
Date:   Fri Feb 4 01:12:34 2011 +0100

    mid_pmu: wait for interactive command complete in pmu_init

    At the time of pmu_init we set all the LSS's into D0i0 mode
    by sending an interactive command. This command was not
    waiting for interactive complete semaphore that is released
    from pmu interrupt handler.

    Also interrupt handler was registered after pmu_init, which
    should be the otherway.

    This will ensure the interrupt handler is registered before
    calling pmu_init and also after interactive command is sent
    in pmu_init() we wait for interactive command complete semaphore.

Signed-off-by: Illyas Mansoor <illyas.mansoor@intel.com>
commit 9d8e0e6094afb88033a3e85cb92e905a8f87cb60
Author: Illyas Mansoor <illyas.mansoor@intel.com>
Date:   Fri Feb 4 00:14:00 2011 +0100

    mid_pmu: wake source counter statistics

    We need a way to tell which logical subsystem woke up from S0i3
    Wake status register provides this information.

    We provide a way to capture how many times each LSS
    woke up the system from S0i3, by reading Wake status
    register and incrementing a counter for each LSS.

    This is printed as part of /sys/kernel/debug/mid_pmu_states

Signed-off-by: Pierre Tardy <pierre.tardy@intel.com>
Acked-by: Illyas Mansoor <illyas.mansoor@intel.com>
commit 54c94eb1ef0d810458a6d4b3b558a356fce54493
Author: Illyas Mansoor <illyas.mansoor@intel.com>
Date:   Mon Jan 31 04:22:59 2011 +0100

    mid_pmu: clear cpu offload cntrl reg in error scenarios

    For S0i3 case we need to set the offload cntrl reg to copy the contents
    of IA C6 SRAM to SC always on SRAM. In case of error if S0i3 fails for
    some reason, or on S0ix successful completion this bit needs to be cleared.

    We ensure it's set during S0i3 entry and is cleared in interrupt handler.

Signed-off-by: Illyas Mansoor <illyas.mansoor@intel.com>
commit 98cb52baaeb1c7d058ec3a12db943f7c60918605
Author: Illyas Mansoor <illyas.mansoor@intel.com>
Date:   Fri Jan 28 05:37:37 2011 +0100

    mid_pmu: bug fix: change lpmp3 command value

    For LPMP3, trigger must be based on "core must be idle" (cmbi)
    and not just C6. Hence LPMP3 was breaking.

    After setting cmbi bit as the trigger, LPMP3 usecase works.

Signed-off-by: Illyas Mansoor <illyas.mansoor@intel.com>
commit 4908f77de188bae7b61b39113747eef2f2bd9b83
Author: Illyas Mansoor <illyas.mansoor@intel.com>
Date:   Fri Jan 28 05:36:18 2011 +0100

    mid_pmu: disable scu semaphore watchdog by default

    SCU semaphore watchdog is getting triggered with 500ms
    timeout value, because of which we see synchronization
    issues, providing an option to selectively enabling it.

    By default disabled.

Signed-off-by: Illyas Mansoor <illyas.mansoor@intel.com>
commit 8e35a33d7754c82fb89e48d25ff3988e4cc03977
Author: Illyas Mansoor <illyas.mansoor@intel.com>
Date:   Thu Jan 27 03:38:19 2011 +0100

    mid_pmu: bug fix: fixed device lss reporting lss0 wrongly

    The MSB of "logical subsystem" byte tells if the device is managed
    by SCU, the MSB was not being checked before getting the LSS
    values.

    This was causing drivers that were not part of SCU getting
    LSS value '0'

    By checking the MSB of "logical sub sytemid" byte from PCI config
    we will get to know if this driver actually belongs to SCU, and
    hence avoid multiple drivers with LSS value 0.

Signed-off-by: Illyas Mansoor <illyas.mansoor@intel.com>
commit 33d19d30ff22685f18f184183b1e675d8fe94fea
Author: Illyas Mansoor <illyas.mansoor@intel.com>
Date:   Mon Jan 17 08:22:32 2011 +0100

    mid_pmu: driver that controls pmus of intel_mid platforms

    Mobile Internet Devices based on the Intel "Medfield" platform have two
    Platform Management Units (PMU). The first PMU (pmu1) comprises of the
    Silverthorne CPU, Graphics, Video encode/decode and Display engines,
    The second PMU (pmu2) is the IO hub.

    The Platform Management Unit (PMU) driver is a Medfield-specific power
    management driver. Intel's  MID provides fine tuned knobs for
    platform level. Intel's Medfield MID provides control for platform
    level power management and the OS Power Management solution guides the
    power states that the subsystems and CPU needs to be in depending on the
    current usage and power policy set by the user.

    The purpose of the Medfield Power Management architecture is to turn
    off subsystems without affecting the end user functionality/usability of
    the system.

    The Power Management scheme uses the concept of operating modes, which
    define the configuration of all the subsystems under each of the usage model
    that the user might put the system in. Based on current platform usage,
    OSPM decides the target power states for the sub systems, and the PMU
    driver implements the OS-HW interface.

    "Intel" Medfield PMU driver interfaces with two power management units
    (PMU) pmu1 & pmu2. On receiving commands PMU driver interfaces
    with the pmu1 & pmu2 via a well defined register interface to drive the
    required power  management flows.

    This patch contains:
    - key definitions for the PMU driver.
    - core logic of the PMU driver as it interfaces with pmu1 & pmu2 for
    different platform power management flows.

Signed-off-by: Vishwesh M Rudramuni <vishwesh.m.rudramuni@intel.com>
Signed-off-by: Rajeev D Muralidhar <rajeev.d.muralidhar@intel.com>
Signed-off-by: Illyas Mansoor <illyas.mansoor@intel.com>
Signed-off-by: Len Brown <len.brown@intel.com>
13 years agoTEST mfld pmu: add arch/x86/platform/mfld/pmu.h
Len Brown [Fri, 12 Aug 2011 21:43:35 +0000 (22:43 +0100)]
TEST mfld pmu: add arch/x86/platform/mfld/pmu.h

from UMG 2.6.35 tree: arch/x86/kernel/mid_pmu.h

commit 1df781ef9bbc9b0fc453537da2a3b1861f363138
Author: Illyas Mansoor <illyas.mansoor@intel.com>
Date:   Thu Jun 23 04:58:43 2011 +0530

    mid_pmu:  sparse warnings fixed

    BZ: 3856

    Fixed the following sparse warnings.

    arch/x86/kernel/mid_pmu.c:302:18: warning: symbol 'pmu_wake_lock' was not declared. Should it be static?
    arch/x86/kernel/mid_pmu.c:1126:15: warning: symbol 'pmu_get_cstate' was not declared. Should it be static?
    arch/x86/kernel/mid_pmu.c:1813:3: warning: symbol 'medfield_lsses' was not declared. Should it be static?
    arch/x86/kernel/mid_pmu.c:1874:5: warning: symbol 'medfield_lsses_num' was not declared. Should it be static?
    arch/x86/kernel/mid_pmu.c:1876:6: warning: symbol 'lss_device_status' was not declared. Should it be static?
    arch/x86/kernel/mid_pmu.c:2368:5: warning: symbol 'mid_suspend' was not declared. Should it be static?

    fixed make namespacecheck issues.

    Change-Id: I7731a0391b1433a7ecfa28bdd3265591d1389495
Signed-off-by: Illyas Mansoor <illyas.mansoor@intel.com>
commit 5e73c57d106f8c766a5a06221e2817a7c9a5b393
Author: Rajesh Poornachandran <rajesh.poornachandran@intel.com>
Date:   Thu Jun 16 16:59:39 2011 -0700

    Revert "Revert "mid_pmu: Moving NC power management logic to OSPM""

    BZ: 1957

    Currently the PM for north complex was done independently by Gfx and ISP drivers.
    There was no synchronization between ISP and Gfx while sending the PM cmd.

    OSPM patch to provide an API, pmu_nc_set_power_state. This API will take care
    of talking to P-unit and getting the corresponding power islands to ON/OFF.
    Gfx and ISP drivers need to use this API in their drivers.

    Change-Id: I628dd8b03f5d09607e3c931e29943fcdb73613cb
Signed-off-by: Sujith Thomas <sujith.thomas@intel.com>
Signed-off-by: Rajesh Poornachandran <rajesh.poornachandran@intel.com>
commit dd6db50f98b6c0d368b9315124b65ec3b1aae2a1
Author: Erwan Mahe <erwanx.mahe@intel.com>
Date:   Thu Jun 23 18:29:21 2011 +0200

    Revert "Revert "mid_pmu: pick correct D0ix states in choose_state""

    BZ: 2102
    This reverts commit 41ff42ea4b74c89d7ed44b51e46ab7ae45b4b87c.

    Change-Id: I5aa5658cf28696a3c79a939ea8644a3b3c4d73f0

commit 41ff42ea4b74c89d7ed44b51e46ab7ae45b4b87c
Author: Marie-Celine Dubut <marie.celinex.dubut@intel.com>
Date:   Wed Jun 22 12:44:06 2011 +0200

    Revert "mid_pmu: pick correct D0ix states in choose_state"

    BZ 2102
    This reverts commit c60a2ae1f8b33abdabbff9c0de5a57ec6588df9d.

    Change-Id: I7e7aed5071adabc824c303628ba855031892e70a

commit c60a2ae1f8b33abdabbff9c0de5a57ec6588df9d
Author: Illyas Mansoor <illyas.mansoor@intel.com>
Date:   Wed Jun 1 13:19:54 2011 +0530

    mid_pmu: pick correct D0ix states in choose_state

    BZ: 2102

    currently pmu_pci_choose_state return PCI_D3hot for all devices.
    For some of devices, it may not be possible to support PCI_D3hot state.
    eg., HSU needs to be put in D0i1, chaabi needs to be put in
    D0i2. It is not appropriate to always choose D0i3 for all devices

    We choose the correct state that is appropriate for each device
    for the  platform.

    This patch should be used only with a FW that is capable of supporting
    Chaabi D0i2.

    Change-Id: Ief7b64bc1ec37d4452ce3222454bdd6102d54c10
Signed-off-by: Illyas Mansoor <illyas.mansoor@intel.com>
commit c4e73f14acb7ffd39a5d965fc23b1f01673363b8
Author: Hari Kanigeri <hari.k.kanigeri@intel.com>
Date:   Fri Jun 3 11:27:13 2011 -0600

    mid_pmu: fix checkpatch violations and some cleanup in exit paths

    BZ: 3066

    Fix the following:

    1. Checkpatch violations and cosmetic changes.
    2. fix correct cleanup in the exit paths of the function mid_pmu_probe

    Below log is related to checkpatch violations.

    1. Checkpatch violations
    =========================

    ERROR: space required before the open parenthesis '('
    + if(pdev->device == 0x81c || pdev->device == 0x81b)

    WARNING: line over 80 characters
    + for (i = 0; i < PMU_MAX_LSS_SHARE && intel_mid_pci_devices[index].dev_driver[i]; i++) {}

    ERROR: trailing statements should be on next line
    + for (i = 0; i < PMU_MAX_LSS_SHARE && intel_mid_pci_devices[index].dev_driver[i]; i++) {}

    WARNING: braces {} are not necessary for single statement blocks
    + for (i = 0; i < PMU_MAX_LSS_SHARE && intel_mid_pci_devices[index].dev_driver[i]; i++) {}

    WARNING: line over 80 characters
    +static pci_power_t  pmu_pci_get_weakest_state_for_lss(int lss_index, struct pci_dev *pdev, pci_power_t state)

    <cut here for brewity, please run checkpatch to see a complete list>

    total: 122 errors, 14 warnings, 2340 lines checked

    Change-Id: I1cdbd6a8b70d303611f0cd426ce63235010d0a07
Signed-off-by: Hari Kanigeri <hari.k.kanigeri@intel.com>
Signed-off-by: Illyas Mansoor <illyas.mansoor@intel.com>
commit d332d4a59c01e1774cd4fdc28d97fe4d865989ee
Author: Vishwesh M Rudramuni <vishwesh.m.rudramuni@intel.com>
Date:   Thu Feb 16 22:36:00 2006 +0530

    pmu: adding atomisp as part of entry criterion for S0i3

    BZ: 1339

    In current build we dont look at the isp runtime status before
    we enter S0i3 state. In this patch we check for the camera status
    in addition to all other device states that we check today in S0i3.

    Change-Id: If3f024fa22d0d744160b961e637e2b1c25e5e1c9
Signed-off-by: Vishwesh M Rudramuni <vishwesh.m.rudramuni@intel.com>
commit 53f93b022da79eadc22a2ac5c3adade98380cf84
Author: Illyas Mansoor <illyas.mansoor@intel.com>
Date:   Mon May 16 00:26:13 2011 +0530

    mid_pmu: demote c6 to c4 while s0ix is in progress

    BZ: 2120

    While S0ix aborts SCU waits for Ack_C6 timeout, IA comes out of
    mwait and since the SCU is still waiting for Ack_C6 the S0ix
    ACK_C6 timeout error interrupt is not recieved, meanwhile a new
    C6 could be triggered from IA and this could trigger a Ack_C6
    SCU can mistake this Ack_C6 as a ack for the previously aborted
    S0ix and continue S0ix flow. This is not correct.

    We check if the system is in S0ix progress state by checking
    scu_ready_sem if its already acquired that means S0ix is in
    progress and the subsequent C6 should be demoted to C4's

    Change-Id: I1b60824b28f9b6579dd551faa8fe485d2074b712
Signed-off-by: Illyas Mansoor <illyas.mansoor@intel.com>
commit 654da78fa8f45bcf4d64d9c0ea115d589f4374c4
Author: Illyas Mansoor <illyas.mansoor@intel.com>
Date:   Sun May 15 23:44:23 2011 +0530

    mid_pmu: c6 offload msr bit cleanup

    BZ: 2116

    We were using magic number for wmsr(0x120) for setting/clearing
    offload bit.

    Fixed this by creating #defines

    Change-Id: I5fe4ec0568e48d12fe30074f8eebbc2a6411b4d8
Signed-off-by: Illyas Mansoor <illyas.mansoor@intel.com>
commit 8118849a0329d0e73761562443ae25c8b1cd3bf9
Author: Fengwei Yin <fengwei.yin@intel.com>
Date:   Sun May 22 11:57:12 2011 +0800

    Revert "mid_pmu:  Moving NC power management logic to OSPM"

    BZ: 2470

    This reverts commit 594c7f0327dd02985fbcde1e0bd83c98e684097f.

commit 594c7f0327dd02985fbcde1e0bd83c98e684097f
Author: Sujith Thomas <sthoma3@umg-lab1.iind.intel.com>
Date:   Thu May 12 10:51:38 2011 +0530

    mid_pmu:  Moving NC power management logic to OSPM

    BZ: 1957

    Currently the PM for north complex was done independently by Gfx and ISP drivers.
    There was no synchronization between ISP and Gfx while sending the PM cmd.

    OSPM patch to provide an API, pmu_nc_set_power_state.
    This API will take care of talking to P-unit and getting the corresponding power
    islands to ON/OFF. Gfx and ISP drivers need to use this API in their drivers.

    Change-Id: I302c9a7a6bb10ae572d340affb2502443d6178fc
Signed-off-by: Sujith Thomas <sujith.thomas@intel.com>
commit cba613f2bde66236706b9c0ba7f1fe6b5ff14ad7
Author: Vishwesh M Rudramuni <vishwesh.m.rudramuni@intel.com>
Date:   Tue May 10 16:22:10 2011 +0530

    pmu:  renaming lss after new wkc implementation in scu

    BZ 1756

    This patch we are re assigning some of the lss to new lss
    based on the WKC implementation in scu.

    Change-Id: Ic7a9adf37194182b424dcdcc0d61cb09bba4a7a5
Signed-off-by: Vishwesh M Rudramuni <vishwesh.m.rudramuni@intel.com>
commit 821d3f9513a5126201531e804c98b3618456d637
Author: Jean-Pierre Stierlin <jean-pierrex.stierlin@intel.com>
Date:   Thu May 5 18:19:43 2011 +0200

    OSPM: Add HSI as wake source in s0i3

    BZ: 1705

    HSI wake event was disabled in SCU configuration

    Revert a hack to disable HSI wake event to the SCU due to spurious interrupts.

    Change-Id: I2e9173fdf79fa158394a4b0b5894f643d3a43b8f

commit cfda66e44bc142f836c2e550211997759aa0d8e2
Author: Illyas Mansoor <illyas.mansoor@intel.com>
Date:   Wed Mar 30 16:23:28 2011 +0530

    mid_pmu: cleanup added explicit LSS ids for s0ix entry

    Currently the LSS that need to be checked for S0ix/LPMP3
    entry is hardcoded making it difficult to read the sub
    system values.

    Added #defines for all the sub system LSS id's, using this
    defined the target config values to check against the SSS
    register values, that tells which subsystems need to in D0i3
    to issue S0i1/3 or LPMP3 commands.

    Also added a way to keep always ON LSS to be in D0i0.

    Added check for Keyboard, UART0/1/2 LSS in S0i1/lpmp3/S0i3 SSS
    config registers.

    Removed LSS 40, 41 from ignore_lss list.

    Change-Id: Ifd28b58f11c66232dc2993b3946c672bbe9931a3
Signed-off-by: Illyas Mansoor <illyas.mansoor@intel.com>
commit 885ebc4f559cdaa19b3dddd02faa2dba246ae689
Author: Sundar Iyer <sundar.iyer@intel.com>
Date:   Tue Mar 22 15:03:51 2011 +0530

    mid_pmu: correct D0ix states during S0i3

    Enable the UART0/1/2 and the KBD modules to be put into D0i3 states
    during the S0i3.

    Change-Id: Idec4907699ba23506900a249a130cecaed85dc82
Signed-off-by: Sundar Iyer <sundar.iyer@intel.com>
commit 56ab6e9474f2e04f50ddede8f2b6db9e1dc852c1
Author: Sundar Iyer <sundar.iyer@intel.com>
Date:   Wed Mar 9 13:19:29 2011 +0530

    mid_pmu: correct USB Dx state during S0i3 entry

    Enable D0i3 state for the USB during S0i3 entry. Making this
    change realizes power figures for the USB rail from ~16mW to ~.4mW

Signed-off-by: Sundar Iyer <sundar.iyer@intel.com>
commit 0c2cb76662387a575c6f41b9f91a85cd76064f55
Author: Illyas Mansoor <illyas.mansoor@intel.com>
Date:   Sat Feb 5 14:52:41 2011 +0100

    mid_pmu: cleanup: fix sparse check warnings

    moved all #defines to mid_pmu.h

    fixed warnings after installing sparse tool

    Fixed the following warnings from sparse.
    with make C=2 >& sparse.log command.

    arch/x86/kernel/mid_pmu.c:46:3: warning: symbol 'pci_dev_index' was not declared. Should it be static?
    arch/x86/kernel/mid_pmu.c:1175:70: warning: incorrect type in argument 2 (different address spaces)
    arch/x86/kernel/mid_pmu.c:1175:70:    expected void volatile [noderef] <asn:2>*addr
    arch/x86/kernel/mid_pmu.c:1175:70:    got unsigned int *
    arch/x86/kernel/mid_pmu.c:1180:76: warning: incorrect type in argument 2 (different address spaces)
    arch/x86/kernel/mid_pmu.c:1180:76:    expected void volatile [noderef] <asn:2>*addr
    arch/x86/kernel/mid_pmu.c:1180:76:    got unsigned int *
    arch/x86/kernel/mid_pmu.c:322:5: warning: symbol 'get_target_platform_state' was not declared. Should it be static?
    arch/x86/kernel/mid_pmu.c:691:6: warning: symbol 'mfld_s0i1_enter' was not declared. Should it be static?
    arch/x86/kernel/mid_pmu.c:717:5: warning: symbol 'mfld_s0i3_enter' was not declared. Should it be static?
    arch/x86/kernel/mid_pmu.c:844:5: warning: symbol 'is_msi_enabled' was not declared. Should it be static?
    arch/x86/kernel/mid_pmu.c:1191:59:    got unsigned int *
    arch/x86/kernel/mid_pmu.c:1502:13: warning: incorrect type in assignment (different address spaces)
    arch/x86/kernel/mid_pmu.c:1502:13:    expected struct mrst_pmu_reg *pmu
    arch/x86/kernel/mid_pmu.c:1502:13:    got void [noderef] <asn:2>*
    arch/x86/kernel/mid_pmu.c:1567:27:    expected void [noderef] <asn:2>*<noident>
    arch/x86/kernel/mid_pmu.c:1567:27:    got struct mrst_pmu_reg *static [toplevel] *<noident>
    ...
    and similar warnings.

Signed-off-by: Illyas Mansoor <illyas.mansoor@intel.com>
commit 33d19d30ff22685f18f184183b1e675d8fe94fea
Author: Illyas Mansoor <illyas.mansoor@intel.com>
Date:   Mon Jan 17 08:22:32 2011 +0100

    mid_pmu: driver that controls pmus of intel_mid platforms

    Mobile Internet Devices based on the Intel "Medfield" platform have two
    Platform Management Units (PMU). The first PMU (pmu1) comprises of the
    Silverthorne CPU, Graphics, Video encode/decode and Display engines,
    The second PMU (pmu2) is the IO hub.

    The Platform Management Unit (PMU) driver is a Medfield-specific power
    management driver. Intel's  MID provides fine tuned knobs for
    platform level. Intel's Medfield MID provides control for platform
    level power management and the OS Power Management solution guides the
    power states that the subsystems and CPU needs to be in depending on the
    current usage and power policy set by the user.

    The purpose of the Medfield Power Management architecture is to turn
    off subsystems without affecting the end user functionality/usability of
    the system.

    The Power Management scheme uses the concept of operating modes, which
    define the configuration of all the subsystems under each of the usage model
    that the user might put the system in. Based on current platform usage,
    OSPM decides the target power states for the sub systems, and the PMU
    driver implements the OS-HW interface.

    "Intel" Medfield PMU driver interfaces with two power management units
    (PMU) pmu1 & pmu2. On receiving commands PMU driver interfaces
    with the pmu1 & pmu2 via a well defined register interface to drive the
    required power  management flows.

    This patch contains:
    - key definitions for the PMU driver.
    - core logic of the PMU driver as it interfaces with pmu1 & pmu2 for
    different platform power management flows.

Signed-off-by: Vishwesh M Rudramuni <vishwesh.m.rudramuni@intel.com>
Signed-off-by: Rajeev D Muralidhar <rajeev.d.muralidhar@intel.com>
Signed-off-by: Illyas Mansoor <illyas.mansoor@intel.com>
Signed-off-by: Len Brown <len.brown@intel.com>
13 years agoTEST mfld pmu: add include/linux/intel_mid_pm.h -- for now
Len Brown [Fri, 12 Aug 2011 21:43:16 +0000 (22:43 +0100)]
TEST mfld pmu: add include/linux/intel_mid_pm.h -- for now

needed to compile mfld pmu driver

from UMG 2.6.35 tree:

commit 1df781ef9bbc9b0fc453537da2a3b1861f363138
Author: Illyas Mansoor <illyas.mansoor@intel.com>
Date:   Thu Jun 23 04:58:43 2011 +0530

    mid_pmu:  sparse warnings fixed

    BZ: 3856

    Fixed the following sparse warnings.

    arch/x86/kernel/mid_pmu.c:302:18: warning: symbol 'pmu_wake_lock' was not declared. Should it be static?
    arch/x86/kernel/mid_pmu.c:1126:15: warning: symbol 'pmu_get_cstate' was not declared. Should it be static?
    arch/x86/kernel/mid_pmu.c:1813:3: warning: symbol 'medfield_lsses' was not declared. Should it be static?
    arch/x86/kernel/mid_pmu.c:1874:5: warning: symbol 'medfield_lsses_num' was not declared. Should it be static?
    arch/x86/kernel/mid_pmu.c:1876:6: warning: symbol 'lss_device_status' was not declared. Should it be static?
    arch/x86/kernel/mid_pmu.c:2368:5: warning: symbol 'mid_suspend' was not declared. Should it be static?

    fixed make namespacecheck issues.

    Change-Id: I7731a0391b1433a7ecfa28bdd3265591d1389495
Signed-off-by: Illyas Mansoor <illyas.mansoor@intel.com>
commit 0704c9bfd967b44da1e61a05f8789052bc6fbd29
Author: Sujith Thomas <sujith.thomas@intel.com>
Date:   Wed May 25 14:55:42 2011 +0530

    mid_pmu: Defining the OSPM macros to handle CONFIG_INTEL_MID_PM disabled

    BZ: 1957

    Currently the OSPM macros are not defined during CONFIG_INTEL_MID_PM disabled.
    This is breaking the compilation in Gfx and ISP drivers whenc CONFIG_PM is disabled.

    Now the OSPM macros are defined irrespective of CONFIG_INTEL_MID_PM flag.

    Change-Id: I6cf6185d712b728e5733c473d8a2947c36c62e03
Signed-off-by: Sujith Thomas <sujith.thomas@intel.com>
commit 5e73c57d106f8c766a5a06221e2817a7c9a5b393
Author: Rajesh Poornachandran <rajesh.poornachandran@intel.com>
Date:   Thu Jun 16 16:59:39 2011 -0700

    Revert "Revert "mid_pmu: Moving NC power management logic to OSPM""

    BZ: 1957

    Currently the PM for north complex was done independently by Gfx and ISP drivers.
    There was no synchronization between ISP and Gfx while sending the PM cmd.

    OSPM patch to provide an API, pmu_nc_set_power_state. This API will take care
    of talking to P-unit and getting the corresponding power islands to ON/OFF.
    Gfx and ISP drivers need to use this API in their drivers.

    Change-Id: I628dd8b03f5d09607e3c931e29943fcdb73613cb
Signed-off-by: Sujith Thomas <sujith.thomas@intel.com>
Signed-off-by: Rajesh Poornachandran <rajesh.poornachandran@intel.com>
commit 53f93b022da79eadc22a2ac5c3adade98380cf84
Author: Illyas Mansoor <illyas.mansoor@intel.com>
Date:   Mon May 16 00:26:13 2011 +0530

    mid_pmu: demote c6 to c4 while s0ix is in progress

    BZ: 2120

    While S0ix aborts SCU waits for Ack_C6 timeout, IA comes out of
    mwait and since the SCU is still waiting for Ack_C6 the S0ix
    ACK_C6 timeout error interrupt is not recieved, meanwhile a new
    C6 could be triggered from IA and this could trigger a Ack_C6
    SCU can mistake this Ack_C6 as a ack for the previously aborted
    S0ix and continue S0ix flow. This is not correct.

    We check if the system is in S0ix progress state by checking
    scu_ready_sem if its already acquired that means S0ix is in
    progress and the subsequent C6 should be demoted to C4's

    Change-Id: I1b60824b28f9b6579dd551faa8fe485d2074b712
Signed-off-by: Illyas Mansoor <illyas.mansoor@intel.com>
commit 8118849a0329d0e73761562443ae25c8b1cd3bf9
Author: Fengwei Yin <fengwei.yin@intel.com>
Date:   Sun May 22 11:57:12 2011 +0800

    Revert "mid_pmu:  Moving NC power management logic to OSPM"

    BZ: 2470

    This reverts commit 594c7f0327dd02985fbcde1e0bd83c98e684097f.

commit 594c7f0327dd02985fbcde1e0bd83c98e684097f
Author: Sujith Thomas <sthoma3@umg-lab1.iind.intel.com>
Date:   Thu May 12 10:51:38 2011 +0530

    mid_pmu:  Moving NC power management logic to OSPM

    BZ: 1957

    Currently the PM for north complex was done independently by Gfx and ISP drivers.
    There was no synchronization between ISP and Gfx while sending the PM cmd.

    OSPM patch to provide an API, pmu_nc_set_power_state.
    This API will take care of talking to P-unit and getting the corresponding power
    islands to ON/OFF. Gfx and ISP drivers need to use this API in their drivers.

    Change-Id: I302c9a7a6bb10ae572d340affb2502443d6178fc
Signed-off-by: Sujith Thomas <sujith.thomas@intel.com>
commit 4d0d20d8deda873a1e027ec2710675f58d2e9c7a
Author: Rajesh Poornachandran <rajesh.poornachandran@intel.com>
Date:   Thu May 5 10:01:30 2011 -0700

    GFX/PM: Export GFX APIs to power-gate NC IPs.
    BZ: 791
    Export GFX APIs (ospm_power_island_up/down) to be used by GFX, Video & Camera driver to power-gate NC IPs.

    Change-Id: Iadbc9513bf90df952063ef148245fbcf6d451dd7
Signed-off-by: Rajesh Poornachandran <rajesh.poornachandran@intel.com>
commit 37c03045efcd790183acdbd3cb94db59566bdb6d
Author: Pierre Tardy <pierre.tardy@intel.com>
Date:   Mon Mar 21 14:47:53 2011 +0100

    mid_pmu: allow several devices to be on the same lss

    HSU devices are in HW in the same lss.
    There is a workaround in IAFW, that will not advertise the correct lss
    for HSU0 and HSU1. This does not solve anything, as HSU0 driver will start
    to make fabric errors as soon as HSU2 is suspended.

    We generically solve the issue by maintaining a table of devices
    present in the same lss. For such very short list, we do not take the
    overhead of using linked list. but rather use a 4 slots table for each lss.

    This patch contains ss hardcode for HSU0 and HSU1. To be removed when
    IAFW remove the bad workaround.

    Change-Id: I11240c225edc92984cca7e5e176bbebab6df2d5d
Signed-off-by: Pierre Tardy <pierre.tardy@intel.com>
commit 33d19d30ff22685f18f184183b1e675d8fe94fea
Author: Illyas Mansoor <illyas.mansoor@intel.com>
Date:   Mon Jan 17 08:22:32 2011 +0100

    mid_pmu: driver that controls pmus of intel_mid platforms

    Mobile Internet Devices based on the Intel "Medfield" platform have two
    Platform Management Units (PMU). The first PMU (pmu1) comprises of the
    Silverthorne CPU, Graphics, Video encode/decode and Display engines,
    The second PMU (pmu2) is the IO hub.

    The Platform Management Unit (PMU) driver is a Medfield-specific power
    management driver. Intel's  MID provides fine tuned knobs for
    platform level. Intel's Medfield MID provides control for platform
    level power management and the OS Power Management solution guides the
    power states that the subsystems and CPU needs to be in depending on the
    current usage and power policy set by the user.

    The purpose of the Medfield Power Management architecture is to turn
    off subsystems without affecting the end user functionality/usability of
    the system.

    The Power Management scheme uses the concept of operating modes, which
    define the configuration of all the subsystems under each of the usage model
    that the user might put the system in. Based on current platform usage,
    OSPM decides the target power states for the sub systems, and the PMU
    driver implements the OS-HW interface.

    "Intel" Medfield PMU driver interfaces with two power management units
    (PMU) pmu1 & pmu2. On receiving commands PMU driver interfaces
    with the pmu1 & pmu2 via a well defined register interface to drive the
    required power  management flows.

    This patch contains:
    - key definitions for the PMU driver.
    - core logic of the PMU driver as it interfaces with pmu1 & pmu2 for
    different platform power management flows.

Signed-off-by: Vishwesh M Rudramuni <vishwesh.m.rudramuni@intel.com>
Signed-off-by: Rajeev D Muralidhar <rajeev.d.muralidhar@intel.com>
Signed-off-by: Illyas Mansoor <illyas.mansoor@intel.com>
Signed-off-by: Len Brown <len.brown@intel.com>
13 years agoTEST mrst idle: update to latest MRST idle code
Len Brown [Fri, 12 Aug 2011 21:42:29 +0000 (22:42 +0100)]
TEST mrst idle: update to latest MRST idle code

replace:

arch/x86/kernel/platform/mrst/pmu.c
arch/x86/kernel/platform/mrst/pmu.h
drivers/idle/intel_idle.c (also: sync w/ 3.1, retain penwell entry)
mrst_s0i3.c, mrst_s0i3_asm.S

minor associated changes:

arch/x86/include/asm/mrst.h
arch/x86/kernel/smpboot.c

n.b. Actual s0i3 support is EXCLUDED from intel_idle for now

Change-Id: Ibd214229062f19a8814ef2371a05f1239758bfa3
Signed-off-by: Len Brown <len.brown@intel.com>
13 years agoRevert "Drop pmu code from medfield gb-stable on top of linux 3.0."
Fei Yang [Tue, 16 Aug 2011 20:50:36 +0000 (13:50 -0700)]
Revert "Drop pmu code from medfield gb-stable on top of linux 3.0."

cherry-pick Len Brown's PMU driver from Alan Cox's linux-3.0-mid-ref tree

This reverts commit 8b0274a0b21b27e82e532b9d7deaf0bbdf5f50b4.

13 years agoDrop pmu code from medfield gb-stable on top of linux 3.0.
Fei Yang [Wed, 27 Jul 2011 18:56:29 +0000 (11:56 -0700)]
Drop pmu code from medfield gb-stable on top of linux 3.0.

Change-Id: Ifc99ac7c2711dae585b3325a9c603bb79816c739
Signed-off-by: Fei Yang <fei.yang@intel.com>
13 years agocpuidle: Add support for the Penwell processor to intel_idle.c
Arjan van de Ven [Fri, 15 Jul 2011 13:39:31 +0000 (14:39 +0100)]
cpuidle: Add support for the Penwell processor to intel_idle.c

The Penwell Atom processor is very similar to the Lincroft processor
in terms of power behavior.. add the device ID.

Change-Id: Idbac8ec87b7ed42a9bc169df2d96172e7685d71f
Signed-off-by: Arjan van de Ven <arjan@linux.intel.com>
Signed-off-by: Alan Cox <alan@linux.intel.com>
13 years agox86: mrst: Add vrtc driver which serves as a wall clock device
Dirk Brandewie [Fri, 15 Jul 2011 13:39:07 +0000 (14:39 +0100)]
x86: mrst: Add vrtc driver which serves as a wall clock device

Moorestown platform doesn't have a m146818 RTC device like traditional
x86 PC, but a firmware emulated virtual RTC device(vrtc), which provides
some basic RTC functions like get/set time. vrtc serves as the only
wall clock device on Moorestown platform.

[ tglx: Changed the exports to _GPL ]

Signed-off-by: Feng Tang <feng.tang@intel.com>
Signed-off-by: Jacob Pan <jacob.jun.pan@linux.intel.com>
Signed-off-by: Alan Cox <alan@linux.intel.com>
LKML-Reference: <20101110172837.3311.40483.stgit@localhost.localdomain>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Dirk Brandewie <dirk.brandewie@gmail.com>
13 years agosfi-cpufreq: remove reading the P state from the hardware
Arjan van de Ven [Fri, 15 Jul 2011 13:39:36 +0000 (14:39 +0100)]
sfi-cpufreq: remove reading the P state from the hardware

Reading the P state data from the HW MSR is actually undefined, and does
not work in various circumstances in practice. (The assumption that
you get a value back that you can match to your own table is very iffy
and not actually correct)
It's also not needed....

Change-Id: Ibb43a9b1752a858ad40fec8cadc402cf6bea2e31
Signed-off-by: Arjan van de Ven <arjan@linux.intel.com>
Signed-off-by: Alan Cox <alan@linux.intel.com>
13 years agosfi-cpufreq: The KConfig entry should depend on SFI not MRST
Arjan van de Ven [Fri, 15 Jul 2011 13:39:36 +0000 (14:39 +0100)]
sfi-cpufreq: The KConfig entry should depend on SFI not MRST

with CONFIG_X86_MRST meaning something very different now...
it's clear that the proper dependency should have been on CONFIG_SFI

Change-Id: Ie49f3d8c9734bf938a2a427448dc8826ab0f69c3
Signed-off-by: Arjan van de Ven <arjan@linux.intel.com>
Signed-off-by: Alan Cox <alan@linux.intel.com>
13 years agosfi-cpufreq: delete write-never read-only variable
Arjan van de Ven [Fri, 15 Jul 2011 13:39:31 +0000 (14:39 +0100)]
sfi-cpufreq: delete write-never read-only variable

The SFI cpufreq driver had a variable that never got initialized, but
did get printk'd...
.. which is leaking kernel memory to the user.
Since it's not used... just delete it

Change-Id: I31626b7d317d999a912c492da4242e118e3e9e1c
Signed-off-by: Arjan van de Ven <arjan@linux.intel.com>
Signed-off-by: Alan Cox <alan@linux.intel.com>
13 years agosfi-cpufreq.c: remove set_cpu_to_gfm() function
Arjan van de Ven [Fri, 15 Jul 2011 13:39:30 +0000 (14:39 +0100)]
sfi-cpufreq.c: remove set_cpu_to_gfm() function

The set_cpu_to_gfm() function worked around a bug in a prerelease firmware;
there's no need for this sort of low level MSR banging anymore at this point
in time.... remove the code.

Change-Id: Id969642ebbee26ceb06fa726aa0c04d9aba46f2a
Signed-off-by: Arjan van de Ven <arjan@linux.intel.com>
Signed-off-by: Alan Cox <alan@linux.intel.com>
13 years agosfi-cpufreq.c: fix how the number of cpus is calculated
Arjan van de Ven [Fri, 15 Jul 2011 13:39:30 +0000 (14:39 +0100)]
sfi-cpufreq.c: fix how the number of cpus is calculated

The driver used "u64" as the size of an SFI table format..
... which actually was an incorrect size.

Fix the code by using a proper sizeof()

with this fix, the right number of cpus gets detected,
and the P state code actually works!

Change-Id: I6e7911bd14eccc54b5449b9568c58d5363872fe8
Signed-off-by: Arjan van de Ven <arjan@linux.intel.com>
Signed-off-by: Alan Cox <alan@linux.intel.com>
13 years agosfi-cpufreq.c: checkpatch.pl cleanups
Arjan van de Ven [Fri, 15 Jul 2011 13:39:30 +0000 (14:39 +0100)]
sfi-cpufreq.c: checkpatch.pl cleanups

Fix various checkpatch violations

Change-Id: I777a3d0a72f73407d3d1190a80361ec4b4572277
Signed-off-by: Arjan van de Ven <arjan@linux.intel.com>
Signed-off-by: Alan Cox <alan@linux.intel.com>
13 years agosfi-cpufreq.c: remove redundant CPUID feature check
Arjan van de Ven [Fri, 15 Jul 2011 13:39:30 +0000 (14:39 +0100)]
sfi-cpufreq.c: remove redundant CPUID feature check

If the firmware reports a frequency table, the CPU supports multiple
frequencies, no need to check that extra.

Change-Id: I596cb7dd28eaeb5fd5826e071358c409d620d07e
Signed-off-by: Arjan van de Ven <arjan@linux.intel.com>
Signed-off-by: Alan Cox <alan@linux.intel.com>
13 years agosfi-cpufreq.c: fix the hardware coordination logic
Arjan van de Ven [Fri, 15 Jul 2011 13:39:30 +0000 (14:39 +0100)]
sfi-cpufreq.c: fix the hardware coordination logic

The platforms that support SFI only support hardware coordination of P states.
This means that all the logic in the driver around CPU masks was just overly
complicated without any good reason.

This patch simplifies the driver by just going for one cpu at a time.

Change-Id: Ibface5db4ea457417475a959943369aee38a04f9
Signed-off-by: Arjan van de Ven <arjan@linux.intel.com>
Signed-off-by: Alan Cox <alan@linux.intel.com>
13 years agosfi-cpufreq.c: remove the strict checking feature
Arjan van de Ven [Fri, 15 Jul 2011 13:39:29 +0000 (14:39 +0100)]
sfi-cpufreq.c: remove the strict checking feature

the sfi-cpufreq.c driver has a "debug the hardware" feature where
it will check after entry if a P state was actually entered.
This is no longer needed, so lets remove the code.

Change-Id: I7700f6e28845085a54c771d1e880ea09d0605bab
Signed-off-by: Arjan van de Ven <arjan@linux.intel.com>
Signed-off-by: Alan Cox <alan@linux.intel.com>
13 years agosfi-cpufreq: make use of rdmsr_on_cpu()
Arjan van de Ven [Fri, 15 Jul 2011 13:39:29 +0000 (14:39 +0100)]
sfi-cpufreq: make use of rdmsr_on_cpu()

The kernel has a function to read msr values on different cpus;
sfi-cpufreq has this open coded. By using rdmsr_on_cpu(),
several functions can just be removed.

Change-Id: Ib6740c5bffeb48cc295df1f11ce060dc9a796c5e
Signed-off-by: Arjan van de Ven <arjan@linux.intel.com>
Signed-off-by: Alan Cox <alan@linux.intel.com>
13 years agosfi-cpufreq.c: remove some unused included
Arjan van de Ven [Fri, 15 Jul 2011 13:39:29 +0000 (14:39 +0100)]
sfi-cpufreq.c: remove some unused included

some of the #include'd headers were not used;
also reorder the #includes so that linux comes before asm and before local.

Change-Id: I34b83efe30771e6e4f050c7762874527383a8cbb
Signed-off-by: Arjan van de Ven <arjan@linux.intel.com>
Signed-off-by: Alan Cox <alan@linux.intel.com>
13 years agosfi-cpufreq: use the generic mperf library
Arjan van de Ven [Fri, 15 Jul 2011 13:39:29 +0000 (14:39 +0100)]
sfi-cpufreq: use the generic mperf library

The kernel has a nice library for getting mperf/aperf data in cpufreq drivers.
This patch makes the sfi-cpufreq driver use this library.

Change-Id: I41a774ed83bb16c14409435e46308a75c6fcdfeb
Signed-off-by: Arjan van de Ven <arjan@linux.intel.com>
Signed-off-by: Alan Cox <alan@linux.intel.com>
13 years agosfi: Initial import of the SFI P state driver from the UMG 2.6.35 kernel git
Arjan van de Ven [Fri, 15 Jul 2011 13:39:28 +0000 (14:39 +0100)]
sfi: Initial import of the SFI P state driver from the UMG 2.6.35 kernel git

This patch is a pretty much straight import and port to 2.6.39 of the UMG
SFI P state driver. Cleanups to follow in later patches.

Change-Id: I2ad97eb2ad9fdc55c8deab7d1365bf36cfb8b91b
Signed-off-by: Arjan van de Ven <arjan@linux.intel.com>
Signed-off-by: Alan Cox <alan@linux.intel.com>
13 years agohack to compile re-vert and do better later
mgross [Wed, 20 Jul 2011 00:05:41 +0000 (17:05 -0700)]
hack to compile re-vert and do better later

Change-Id: I56a6db438004ddd2d1906df9b718846bd8adbf91

13 years agomrst: Don't do idle set up on non MRST hardware
Alan Cox [Fri, 15 Jul 2011 13:39:28 +0000 (14:39 +0100)]
mrst: Don't do idle set up on non MRST hardware

Change-Id: I4be71a25f7857d6c47f2ebe42566b18572ca353c
Signed-off-by: Alan Cox <alan@linux.intel.com>
13 years agox86/mrst: Add platform data for Max3110 devices
Feng Tang [Fri, 15 Jul 2011 13:39:28 +0000 (14:39 +0100)]
x86/mrst: Add platform data for Max3110 devices

Those info will be used when spi controller driver setup
max3110 as a slave device

Change-Id: I20262ed7bca2d6ab52af8043e84787709d82e575
Signed-off-by: Feng Tang <feng.tang@intel.com>
Signed-off-by: Alan Cox <alan@linux.intel.com>
Signed-off-by: Dirk Brandewie <dirk.brandewie@gmail.com>
13 years agospi/spi-dw.h: Expose interface for platform code to register external CS
Dirk Brandewie [Fri, 15 Jul 2011 13:39:28 +0000 (14:39 +0100)]
spi/spi-dw.h: Expose interface for platform code to register external CS

Some platforms use a chip select mechanism other than that provided by
the controller.  Expose the mechanism for the platform code to
register the external chip select control function with the driver.

Change-Id: If2807645a629833ebd50bab9073c56d70ea1826d
Signed-off-by: Dirk Brandewie <dirk.brandewie@gmail.com>
Signed-off-by: Alan Cox <alan@linux.intel.com>
13 years agospi-dw-pci: Add runtime power management
Dirk Brandewie [Fri, 15 Jul 2011 13:39:27 +0000 (14:39 +0100)]
spi-dw-pci: Add runtime power management

This patch adds runtime power management to the PCI variant of the
designware SPI host controller driver.

Change-Id: Id083e554248d4f0558108e6363d097ad306198ef
Signed-off-by: Kristen Carlson Accardi <kristen@linux.intel.com>
Signed-off-by: Dirk Brandewie <dirk.brandewie@gmail.com>
Signed-off-by: Alan Cox <alan@linux.intel.com>
13 years agospi/spi-dw: Rework message processing
Dirk Brandewie [Fri, 15 Jul 2011 13:39:27 +0000 (14:39 +0100)]
spi/spi-dw: Rework message processing

This patch reworks the message pump worker thread function to run
    until all messages queued to the driver have been handled. The
    function to handle individual spi_transfers is now a synchronus
    function the tasklet to handle spi_transfers has been removed. Work
    for the worker thread is only queued in host controller transfer
    function.

    Psuedo code for new thread function:
      message = get_message()
      while (message){
        for_each_transfer_in_msg(message){
          transfer_setup(transfer)
          do_transfer()
        }
        complete_message()
        message = get_message()
      }

    Changes that fell out of the message thread changes:
    Non-DMA transfers that are larger than the size of the controller FIFO
    are handled as interrupt driven transfers.

    Common FIFO handling functions shared PIO and interrupt transfers.

    Simplified queue stop/start funcitons.

    Cleanup fixes:
    Changed exported all exported function names to have spi_dw_ prefix

    Set fifo lenght in dw_spi_mid_init()

    Added dw_spi_{en,dis}able inline functions to replace spi_enable_chip()
    Added dw_spi_{mask,umask}_intr inline functions

Change-Id: I6a5f015ff1dbfa5d41297ca4c37bd3fbd9859959
Signed-off-by: Dirk Brandewie <dirk.brandewie@gmail.com>
Signed-off-by: Alan Cox <alan@linux.intel.com>
13 years agospi/spi-dw: Rename internal functions to match file naming convention.
Dirk Brandewie [Fri, 15 Jul 2011 13:39:27 +0000 (14:39 +0100)]
spi/spi-dw:  Rename internal functions to match file naming convention.

Rename internal functions and data structures to match file name
convention also change the Moorsetown {MRST/mrst} names to be generic
to the driver since the driver is in use in multiple SOC's.

Change-Id: I94fa9837b97fa42d5cc617c722f1fd8ebf61ac17
Signed-off-by: Dirk Brandewie <dirk.brandewie@gmail.com>
Signed-off-by: Alan Cox <alan@linux.intel.com>
13 years agoconfig: Allow a Medfield selection
Alan Cox [Fri, 15 Jul 2011 13:39:35 +0000 (14:39 +0100)]
config: Allow a Medfield selection

We have nothing much Medfield specific - yet but this is the boiler plate for it

Allowing Medfield only does need one fix up for the idle driver - we want the
same idle behaviour as Moorestown but we don't have the PMU hook

Change-Id: I9e27ffb0c78e59a1beaf292971bc55517099b9ff
Signed-off-by: Alan Cox <alan@linux.intel.com>
13 years agoconfig: Update dependancies for multi MID devices
Alan Cox [Fri, 15 Jul 2011 13:39:35 +0000 (14:39 +0100)]
config: Update dependancies for multi MID devices

We have some stuff shared between Moorestown and Medfield so mark the
Kconfig entries for them as requiring X86_INTEL_MID

Change-Id: I26b87b5e96264c4e0758465cc4f79947491f8b38
Signed-off-by: Alan Cox <alan@linux.intel.com>
13 years agoconfig: introduce an INTEL_MID configuration
Alan Cox [Fri, 15 Jul 2011 13:39:35 +0000 (14:39 +0100)]
config: introduce an INTEL_MID configuration

We need to carve up the configuration between

- MID general
- Moorestown specific
- Medfield specific
- Future devices

As a base point create an INTEL_MID configuration property. We make the existing
MRST configuration a sub-option. This means that the rest of the kernel config
can still use X86_MRST checks without anything going backwards.

After this is merged future patches will tidy up which devices are MID and
which are X86_MRST, as well as add options for Medfield.

Change-Id: Idbe1121c0b7928273eeca7bb5494d9dff320eca1
Signed-off-by: Alan Cox <alan@linux.intel.com>
13 years agoThis patch is based on umg's 2.6.35 kernel which adds support for
Alan Cox [Fri, 15 Jul 2011 13:40:05 +0000 (14:40 +0100)]
This patch is based on umg's 2.6.35 kernel which adds support for
a few new commands. It also has a few fixes and and adapt to the
upstram ipc driver structure.

key changes are:
- new ioctl commands to support fw upgrade and access to mip header,
  hand-off buffer and revision
- consolidated fw update logic with moorestown
- misc clean up such as uncessary header files, typos

the fw update flow has not been tested since scu fw support is not
officially released. there is also issue with the current userspace
utiltity which hardcoding search for ipcutil driver as misc char
driver. The overall firmware update flow between ipcutil driver and
userspace should be revisited in that it does not use the existing
request_firmware interface, instead it relies on ioctl calls specific
to the driver. This will likely to happen after fw update support is
in the official scu fw release.

Most ipc commands has been tested with success on iCDK, including
access to MSIC registers, vRTC, OSNIB read. But there are occasional
ipc command timeout on mip and vrtc access. needs futher investigation
with fw team.

Change-Id: I755b5b21b769180a33261e5be71a63e58ea88a1b
Signed-off-by: Jacob Pan <jacob.jun.pan@linux.intel.com>
Signed-off-by: Alan Cox <alan@linux.intel.com>
13 years agox86: rtc: Don't register a platform RTC device for Intel MID platforms
Mathias Nyman [Fri, 15 Jul 2011 13:39:53 +0000 (14:39 +0100)]
x86: rtc: Don't register a platform RTC device for Intel MID platforms

Intel MID x86 platforms have a memory mapped virtual RTC instead.
No MID platform have the default ports (and accessing them may do weird stuff)

Change-Id: I768f4918f485fa4fc7d27002a9ac2ed8eef6363c
Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
Signed-off-by: Alan Cox <alan@linux.intel.com>
13 years agomrst: Change early printk to depend on X86_INTEL_MID
Dirk Brandewie [Fri, 15 Jul 2011 13:39:36 +0000 (14:39 +0100)]
mrst: Change early printk to depend on X86_INTEL_MID

Moorestown and Medfield have the same SPI controller IP block.  Make
early printk support depend on the common X86_INTEL_MID config option.

Change-Id: I21c4c06d5b371a498e8a0ebce14d483aabc8cf2d
Signed-off-by: Dirk Brandewie <dirk.brandewie@gmail.com>
Signed-off-by: Alan Cox <alan@linux.intel.com>
13 years agox86/mrst: Add support for Penwell clock calibration
Dirk Brandewie [Fri, 15 Jul 2011 13:39:23 +0000 (14:39 +0100)]
x86/mrst: Add support for Penwell clock calibration

Change-Id: Ib5ceb933b65bea16b622af6080a08c06224b4ea2
Signed-off-by: Dirk Brandewie <dirk.brandewie@gmail.com>
Signed-off-by: Alan Cox <alan@linux.intel.com>
13 years agopmu: check if it is Moorestown
Alan Cox [Fri, 15 Jul 2011 13:39:23 +0000 (14:39 +0100)]
pmu: check if it is Moorestown

Enabling the Moorestown PMU regardless is rude, fix it

Change-Id: I2d5444760e9424f1fc3708d5f46abf20dddaf74e
Signed-off-by: Alan Cox <alan@linux.intel.com>
13 years agoThe main thread is waiting on on a wait_queue but wake_up_process() is
Dirk Brandewie [Fri, 15 Jul 2011 13:39:23 +0000 (14:39 +0100)]
The main thread is waiting on on a wait_queue but wake_up_process() is
used to wake the thread. This reads weirdly. Change wake_up_process() to
wake_up().

Tested on the Moorestown tablet build

Change-Id: I780d3ec79cadfb936198a238aca54c517e02c484
Signed-off-by: Dirk Brandewie <dirk.brandewie@gmail.com>
Signed-off-by: Alan Cox <alan@linux.intel.com>
13 years agomrst: added some platform data for board mm
Jekyll Lai [Fri, 15 Jul 2011 13:39:23 +0000 (14:39 +0100)]
mrst: added some platform data for board mm

Add SFI glue for the following devices:

tca6416: a gpio expander compatible with max7315
mpu3050: gyro sensor
ektf2136_spi: ektf2136 with spi interface

[Not all upstream so not yet submittable]

Change-Id: I8c343ccf52afea3c1e152017f10837a43f5c328f
Signed-off-by: Jekyll Lai <jekyll_lai@wistron.com>
Signed-off-by: Alan Cox <alan@linux.intel.com>
13 years agoMoorestown platform uses IPC commands to perform power off and
Jacob Pan [Fri, 15 Jul 2011 13:39:22 +0000 (14:39 +0100)]
Moorestown platform uses IPC commands to perform power off and
reboot action, based on the IPC command FW will take different
boot path.

Change-Id: Ic25ed4144f648557953a17196932a5a61e355ef0
Signed-off-by: Alek Du <alek.du@intel.com>
Signed-off-by: Jacob Pan <jacob.jun.pan@linux.intel.com>
Signed-off-by: Alan Cox <alan@linux.intel.com>
13 years agovrtc: change its year offset from 1960 to 1972
Feng Tang [Fri, 15 Jul 2011 13:39:22 +0000 (14:39 +0100)]
vrtc: change its year offset from 1960 to 1972

Real world year equals the value in vrtc YEAR register plus an offset.
We used 1960 as the offset to make leap year consistent, but for a
device's first use, its YEAR register is 0 and the system year will
be parsed as 1960 which is not a valid UNIX time and will cause many
applications to fail mysteriously. So use 1972 instead to fix this
issue.

Updated patch which adds a sanity check suggested by Mathias

Change-Id: I521271ac79b5657e9b9eb4a81fe6b2e5f5e94e0b
Signed-off-by: Feng Tang <feng.tang@intel.com>
Signed-off-by: Alan Cox <alan@linux.intel.com>
13 years agopmu: Fixup build
Alan Cox [Fri, 15 Jul 2011 13:39:21 +0000 (14:39 +0100)]
pmu: Fixup build

Quick build fixup for 2.6.39

Change-Id: I16104ec4c6d4e3e19d0429c48a9cbf44484e7faf

13 years agomrst/pmu: workaround for SD HC2 bug in SCU fw
Yong Wang [Fri, 15 Jul 2011 13:39:21 +0000 (14:39 +0100)]
mrst/pmu: workaround for SD HC2 bug in SCU fw

Langwell C0 added a new SD host controller. However, SCU fw has not
been updated yet to support SD HC2. s0i3 will always be blocked before
that is fixed and this patch serves as a workaround before the fw fix
is available.

Change-Id: Idd7a9fdba8e7be1882e6cbb63057f2152331539b
Signed-off-by: Yong Wang <yong.y.wang@intel.com>
13 years agox86/mrst/pci: assign d3_delay to 0 for
Jacob Pan [Fri, 15 Jul 2011 13:39:37 +0000 (14:39 +0100)]
x86/mrst/pci: assign d3_delay to 0 for

Langwell devices are not true pci devices, they are not subject to the 10 ms
d3 to d0 delay required by pci spec. This patch assigns d3_delay to 0 for all
langwell pci devices.

Change-Id: I2d1e2f3c4773ad80582aa0d0185ee37829200e0c
Signed-off-by: Jacob Pan <jacob.jun.pan@linux.intel.com>
Signed-off-by: Alan Cox <alan@linux.intel.com>
13 years agomrst-pci: power off some unused devices
Kristen Carlson Accardi [Fri, 15 Jul 2011 13:39:21 +0000 (14:39 +0100)]
mrst-pci: power off some unused devices

For devices which we are not using on Moorestown, send D3 request.

Change-Id: Ie4873da261f3409efa988fbc2a70ea7314f9457f
Signed-off-by: Kristen Carlson Accardi <kristen@linux.intel.com>
Signed-off-by: Alan Cox <alan@linux.intel.com>
13 years agopmu: bugfix for checking pci_state
Kristen Carlson Accardi [Fri, 15 Jul 2011 13:39:21 +0000 (14:39 +0100)]
pmu: bugfix for checking pci_state

Check to make sure new requested pci_state is larger than existing
state, not smaller.

Change-Id: Ic323a024d0da89873d5601750f5622cdeec489c7
Signed-off-by: Kristen Carlson Accardi <kristen@linux.intel.com>
13 years agopmu: fix kernel panic on for_each_pci_dev
Jekyll Lai [Fri, 15 Jul 2011 13:39:20 +0000 (14:39 +0100)]
pmu: fix kernel panic on for_each_pci_dev

Setting pdev initial value to NULL in order to avoid kernel panic
in "for_each_pci_dev()."

Change-Id: I5970ec466c645bf3ebd168b973ccb612dbd424e3
Signed-off-by: Jekyll Lai <jekyll_lai@wistron.com>
13 years agomrst: Add pmu driver, s0i3 support
Len Brown [Fri, 15 Jul 2011 13:39:20 +0000 (14:39 +0100)]
mrst: Add pmu driver, s0i3 support

(todo: split into multiple patches)

The Moorestown (MRST) Power Management Unit (PMU) driver
directs the SOC power states in the "Langwell" south complex (SCU).
It hooks pci_platform_pm_ops[] and thus observes all PCI .set_state
requests.  For devices in the SC, the pmu driver translates those
PCI requests into the appropriate commands for the SCU.

The PMU driver helps implement S0i3, a deep system idle power idle state.
Entry into S0i3 is via cpuidle, just like regular processor c-states.
S0i3 depends on pre-conditions including uni-processor, graphics off,
and certain IO devices in the SC must be off.  If those pre-conditions
are met, then the PMU allows cpuidle to enter S0i3, otherwise such requests
are demoted to Atom C6.

This driver is based on original prototype work by Bruce Flemming,
Illyas Mansoor, Rajeev D. Muralidhar and Vishwesh M. Rudramuni.
It includes contributions from H. Peter Anvin, Arjan van de Ven and Yong Wang.

Change-Id: I8a3cb79cdc5a671bac9ff2b7eff15dcd1c5f0149
Signed-off-by: Len Brown <len.brown@intel.com>
13 years agox86, mrst: Some drivers need to known when an SCU is available
Alan Cox [Fri, 15 Jul 2011 13:39:19 +0000 (14:39 +0100)]
x86, mrst: Some drivers need to known when an SCU is available

Add a notifier so that drivers can hook into SCU availability in order to
take actions post initialisation when/if the SCU becomes available.

In the ideal world we wouldn't need this and we could avoid any init
dependancies of this form, but in practice we can't do it for some cases.

Change-Id: I8504ff8fac5e8f3ac680aaf2f5334a8284af70c2
Signed-off-by: Alan Cox <alan@linux.intel.com>
13 years agox86, mrst: change the pmic_gpio device type to IPC
Feng Tang [Fri, 15 Jul 2011 13:39:19 +0000 (14:39 +0100)]
x86, mrst: change the pmic_gpio device type to IPC

In latest firmware's SFI tables, pmic_gpio has been set to
IPC type of device, so we need handle it too.

Change-Id: Ib34b6cc0029b431efde27527487ba968610e0bdd
Signed-off-by: Feng Tang <feng.tang@intel.com>
Signed-off-by: Alan Cox <alan@linux.intel.com>
13 years agox86/apic: allow use of lapic timer early calibration result
Jacob Pan [Fri, 15 Jul 2011 13:39:17 +0000 (14:39 +0100)]
x86/apic: allow use of lapic timer early calibration result

lapic timer calibration can be combined with tsc in platform specific
calibration functions. if such calibration result is obtained early,
we can skip the redundant calibration loops.

Change-Id: Ib3e4d7ad168172191ff47f3db4368f9869f6ce68
Signed-off-by: Jacob Pan <jacob.jun.pan@intel.com>
Signed-off-by: Jacob Pan <jacob.jun.pan@linux.intel.com>
Signed-off-by: Alan Cox <alan@linux.intel.com>
Signed-off-by: Dirk Brandewie <dirk.brandewie@gmail.com>
13 years agox86/apic: do not clear nr_irqs_gsi if no legacy irqs
Jacob Pan [Fri, 15 Jul 2011 13:39:07 +0000 (14:39 +0100)]
x86/apic: do not clear nr_irqs_gsi if no legacy irqs

nr_legacy_irqs is set in probe_nr_irqs_gsi, we should not clear it after that.
Otherwise, the result is that MSI irqs will be allocated from the wrong range
for the systems without legacy PIC.

Change-Id: Ib73f1de23d34cf5b8b549d43c371d7d8a58ecb52
Signed-off-by: Jacob Pan <jacob.jun.pan@linux.intel.com>
Signed-off-by: Dirk Brandewie <dirk.brandewie@gmail.com>
13 years agox86/mrst: set ISA bus type for fake MP IRQs
Jacob Pan [Fri, 15 Jul 2011 13:39:06 +0000 (14:39 +0100)]
x86/mrst: set ISA bus type for fake MP IRQs

We use MP IRQs for SFI presented timer interrupts, we should also set
mp_bus_not_pci for MP_ISA_BUS so that pin_2_irq mapping is correct.

Change-Id: I04353760d0930d5276d4087245516bacd40a5f2f
Signed-off-by: Jacob Pan <jacob.jun.pan@linux.intel.com>
Signed-off-by: Dirk Brandewie <dirk.brandewie@gmail.com>
13 years agox86/ioapic: use legacy_pic to set correct gsi-irq mapping
Jacob Pan [Fri, 15 Jul 2011 13:39:06 +0000 (14:39 +0100)]
x86/ioapic: use legacy_pic to set correct gsi-irq mapping

Using compile time NR_LEGACY_IRQS causes the wrong gsi-irq mapping on
non-PC platforms, such as Moorestown. This patch uses legacy_pic abstraction
to set the correct number of legacy interrupts at runtime. For Moorestown,
nr_legacy_irqs = 0. We have 1:1 mapping for gsi-irq even within the legacy
irq range.

Change-Id: I3ab904292f1270677a55a08a4c1134681a2efd50
Signed-off-by: Jacob Pan <jacob.jun.pan@linux.intel.com>
Signed-off-by: Dirk Brandewie <dirk.brandewie@gmail.com>
13 years agox86/platform: add a wallclock_init func to x86_platforms ops
Feng Tang [Fri, 15 Jul 2011 13:39:06 +0000 (14:39 +0100)]
x86/platform: add a wallclock_init func to x86_platforms ops

Some wall clock devices use MMIO based HW register, this new function will
give them a chance to do some initialization work before their get/set_time
service get called.

Change-Id: I81370ba54d6a3ec37b1ed57a0b177c9c951a6c13
Signed-off-by: Feng Tang <feng.tang@intel.com>
Signed-off-by: Jacob Pan <jacob.jun.pan@linux.intel.com>
Signed-off-by: Alan Cox <alan@linux.intel.com>
Signed-off-by: Dirk Brandewie <dirk.brandewie@gmail.com>
13 years agointel_mid_ssp_spi: Moorestown and Medfield SPI for SSP devices
Mathieu SOULARD [Fri, 15 Jul 2011 13:38:51 +0000 (14:38 +0100)]
intel_mid_ssp_spi:  Moorestown and Medfield SPI for SSP devices

This driver is a fusion of various internal drivers into a single
driver for the SPI slave/master on the Intel Moorestown and Medfield
SSP devices.

Change-Id: Ie0efd26c3b4664334c768b7a284ebb2b0e9c47f3
Signed-off-by: Mathieu SOULARD <mathieux.soulard@intel.com>
[Ported to the -next tree DMA engine]
Signed-off-by: Alan Cox <alan@linux.intel.com>
13 years agointel_scu_ipc_utils: Support for reflashing Medfield firmware
Sudha Krishnakumar [Fri, 15 Jul 2011 13:38:51 +0000 (14:38 +0100)]
intel_scu_ipc_utils: Support for reflashing Medfield firmware

Initial flashing support. This will change before any production release.

Change-Id: I563bd1c2385ef504f9292edc7c3adf73e6866d2a
Signed-off-by: Sudha Krishnakumar <sudha.krishnakumar@intel.com>
[Tidied up the bracketing and some oddments]
Signed-off-by: Alan Cox <alan@linux.intel.com>
13 years agoRemove ARM dependencies in alarm
Fei Yang [Mon, 18 Jul 2011 21:33:27 +0000 (14:33 -0700)]
Remove ARM dependencies in alarm

Change-Id: I316548e98f0281e98f2153e0616e2ad2d4d4545f

13 years agofix missing export that breaks cpufreq built as module
mgross [Mon, 18 Jul 2011 23:44:32 +0000 (16:44 -0700)]
fix missing export that breaks cpufreq built as module

Change-Id: I387431accb0177c97298f28fc9d5498cc5a3032e

13 years agofix poortly maintained compass driver from google
mgross [Mon, 18 Jul 2011 21:52:36 +0000 (14:52 -0700)]
fix poortly maintained compass driver from google

Change-Id: I315924931144545e9c1aff043c7b81114f0b13ee

13 years agoupdate with proper console locking in un-maintained android code
mgross [Mon, 18 Jul 2011 21:24:32 +0000 (14:24 -0700)]
update with proper console locking in un-maintained android code

Change-Id: If0b845548eff9baac0ccfcaf52613e6276d9f544

13 years agofix android added armisms in alarm code
mgross [Mon, 18 Jul 2011 21:13:17 +0000 (14:13 -0700)]
fix android added armisms in alarm code

Change-Id: I9a5bd859b0c49071e79a24e9582e43415adda843

13 years agoinput: gpio_input: don't print debounce message unless flag is set
Dima Zavin [Tue, 8 Nov 2011 21:03:11 +0000 (13:03 -0800)]
input: gpio_input: don't print debounce message unless flag is set

Change-Id: I29ccb32e795c5c3e4c51c3d3a209f5b55dfd7d94
Signed-off-by: Dima Zavin <dima@android.com>
13 years agonet: wireless: bcm4329: Skip dhd_bus_stop() if bus is already down
Dmitry Shmidt [Fri, 4 Nov 2011 18:10:04 +0000 (11:10 -0700)]
net: wireless: bcm4329: Skip dhd_bus_stop() if bus is already down

Signed-off-by: Dmitry Shmidt <dimitrysh@google.com>
13 years agonet: wireless: bcmdhd: Skip dhd_bus_stop() if bus is already down
Dmitry Shmidt [Fri, 4 Nov 2011 18:08:37 +0000 (11:08 -0700)]
net: wireless: bcmdhd: Skip dhd_bus_stop() if bus is already down

Signed-off-by: Dmitry Shmidt <dimitrysh@google.com>
13 years agonet: wireless: bcmdhd: Improve suspend/resume processing
Dmitry Shmidt [Wed, 2 Nov 2011 23:51:29 +0000 (16:51 -0700)]
net: wireless: bcmdhd: Improve suspend/resume processing

Signed-off-by: Dmitry Shmidt <dimitrysh@google.com>
13 years agonet: wireless: bcmdhd: Check if FW is Ok for internal FW call
Dmitry Shmidt [Wed, 2 Nov 2011 22:06:14 +0000 (15:06 -0700)]
net: wireless: bcmdhd: Check if FW is Ok for internal FW call

Signed-off-by: Dmitry Shmidt <dimitrysh@google.com>
13 years agotcp: Don't nuke connections for the wrong protocol
Lorenzo Colitti [Fri, 4 Nov 2011 00:05:11 +0000 (17:05 -0700)]
tcp: Don't nuke connections for the wrong protocol

Currently, calling tcp_nuke_addr to reset IPv6 connections
resets IPv4 connections as well, because all Android
framework sockets are dual-stack (i.e., IPv6) sockets, and
we don't check the source address to see if the connection
was in fact an IPv4 connection.

Fix this by checking the source address and not resetting
the connection if it's a mapped address.

Also slightly tweak the IPv4 code path, which doesn't check
for mapped addresses either. This was not causing any
problems because tcp_is_local normally always returns true
for LOOPBACK4_IPV6 (127.0.0.6), because the loopback
interface is configured as as 127.0.0.0/8. However,
checking explicitly for LOOPBACK4_IPV6 makes the code a bit
more robust.

Bug: 5535055
Change-Id: I4d6ed3497c5b8643c864783cf681f088cf6b8d2a
Signed-off-by: Lorenzo Colitti <lorenzo@google.com>
13 years agoARM: common: fiq_debugger: make uart irq be no_suspend
Dima Zavin [Thu, 27 Oct 2011 23:31:24 +0000 (16:31 -0700)]
ARM: common: fiq_debugger: make uart irq be no_suspend

Change-Id: I8e3d2a95c0ddc2706b021cd33534fe2fd302268e
Signed-off-by: Dima Zavin <dima@android.com>
13 years agonet: wireless: Skip connect warning for CONFIG_CFG80211_ALLOW_RECONNECT
Dmitry Shmidt [Fri, 28 Oct 2011 17:35:37 +0000 (10:35 -0700)]
net: wireless: Skip connect warning for CONFIG_CFG80211_ALLOW_RECONNECT

Signed-off-by: Dmitry Shmidt <dimitrysh@google.com>
13 years agomm: avoid livelock on !__GFP_FS allocations
Mel Gorman [Mon, 24 Oct 2011 23:33:42 +0000 (16:33 -0700)]
mm: avoid livelock on !__GFP_FS allocations

Under the following conditions, __alloc_pages_slowpath can loop
forever:
gfp_mask & __GFP_WAIT is true
gfp_mask & __GFP_FS is false
reclaim and compaction make no progress
order <= PAGE_ALLOC_COSTLY_ORDER

The gfp conditions are normally invalid, because !__GFP_FS
disables most of the reclaim methods that __GFP_WAIT would
wait for.  However, these conditions happen very often during
suspend and resume, when pm_restrict_gfp_mask() effectively
converts all GFP_KERNEL allocations into __GFP_WAIT.

The oom killer is not run because gfp_mask & __GFP_FS is false,
but should_alloc_retry will always return true when order is less
than PAGE_ALLOC_COSTLY_ORDER.  __alloc_pages_slowpath will
loop forever between the rebalance label and should_alloc_retry,
unless another thread happens to release enough pages to satisfy
the allocation.

Add a check to detect when PM has disabled __GFP_FS, and do not
retry if reclaim is not making any progress.

[taken from patch on lkml by Mel Gorman, commit message by ccross]
Change-Id: I864a24e9d9fd98bd0e3d6e9c1e85b6c1b766850e
Signed-off-by: Colin Cross <ccross@android.com>
13 years agommc: block: Improve logging of handling emmc timeouts
Ken Sumrall [Wed, 26 Oct 2011 01:16:58 +0000 (18:16 -0700)]
mmc: block: Improve logging of handling emmc timeouts

Add some logging to make it clear just how the emmc timeout
was handled.

Change-Id: Id33fd28d8b9778dc4e85db829e2637a328eddab4
Signed-off-by: Ken Sumrall <ksumrall@android.com>
13 years agommc: block: add checking of r/w command response
Russell King - ARM Linux [Mon, 20 Jun 2011 19:10:49 +0000 (20:10 +0100)]
mmc: block: add checking of r/w command response

Check the status bits in the r/w command response for any errors.
If error bits are set, then we won't have seen any data transferred,
so it's pointless doing any further checking.

Change-Id: If118a4bcbb0e57a7d95b5e40d662fca87fdcba7f
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Acked-by: Linus Walleij <linus.walleij@linaro.org>
Tested-by: Pawel Moll <pawel.moll@arm.com>
Signed-off-by: Chris Ball <cjb@laptop.org>
13 years agommc: block: improve error recovery from command channel errors
Russell King - ARM Linux [Mon, 20 Jun 2011 19:10:28 +0000 (20:10 +0100)]
mmc: block: improve error recovery from command channel errors

Command channel errors fall into four classes:

1. The command was issued with the card in the wrong state
2. The command failed to be received by the card correctly
3. The cards response failed to be received by the host (CRC error)
4. The card failed to respond to the card

For (1), in theory we should know that the card is in the correct state.
However, a failed stop command (or other failure) may result in the card
remaining in a data transfer state from the previous command.  If we
detect this condition, we try to recover by sending a stop command.

For the initial commands (set block count and the read/write command)
no data will have been transferred.  All that we need deal with is
retrying at this point.  A failed stop command can be remedied as
above.

If we are unable to recover the card (eg, the card ignores our requests
for status, or we don't recognise the error code) then we immediately
fail the request.

Change-Id: Ief109a57fd21a247381b38f1164c22f0344f0284
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Acked-by: Linus Walleij <linus.walleij@linaro.org>
Tested-by: Pawel Moll <pawel.moll@arm.com>
Signed-off-by: Chris Ball <cjb@laptop.org>
13 years agommc: block: allow get_card_status() to return error status
Russell King - ARM Linux [Mon, 20 Jun 2011 19:10:08 +0000 (20:10 +0100)]
mmc: block: allow get_card_status() to return error status

If the MMC_SEND_STATUS command is not successful, we should not return
a zero status word, but instead allow the caller to know positively
that an error occurred.

Convert the open-coded get_card_status() to use the helper function,
and provide definitions for the card state field.

Change-Id: Icfd6258af78a89c21abac386c556153fa3fac364
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Acked-by: Linus Walleij <linus.walleij@linaro.org>
Tested-by: Pawel Moll <pawel.moll@arm.com>
Signed-off-by: Chris Ball <cjb@laptop.org>
13 years agonet: wireless: bcm4329: Prohibit FW access in case of FW crash
Dmitry Shmidt [Wed, 26 Oct 2011 20:57:26 +0000 (13:57 -0700)]
net: wireless: bcm4329: Prohibit FW access in case of FW crash

Signed-off-by: Dmitry Shmidt <dimitrysh@google.com>
13 years agonet: wireless: bcmdhd: Adjust scan parameters for wl_cfg80211_connect()
Dmitry Shmidt [Wed, 26 Oct 2011 19:22:25 +0000 (12:22 -0700)]
net: wireless: bcmdhd: Adjust scan parameters for wl_cfg80211_connect()

Signed-off-by: Dmitry Shmidt <dimitrysh@google.com>
13 years agonet: wireless: bcmdhd: Update to version 5.90.125.94
Dmitry Shmidt [Tue, 25 Oct 2011 23:32:46 +0000 (16:32 -0700)]
net: wireless: bcmdhd: Update to version 5.90.125.94

- Fix WFD interface removal
- Fix profile update
- Keep same mode for softap or WFD during early suspend
- Add dhd_console_ms parameter access

Signed-off-by: Dmitry Shmidt <dimitrysh@google.com>
13 years agoARM: common: fiq_debugger: protect the uart state from the sleep timer
Dima Zavin [Fri, 14 Oct 2011 05:38:45 +0000 (22:38 -0700)]
ARM: common: fiq_debugger: protect the uart state from the sleep timer

Change-Id: I6b834d5cab96c3466042f758feb69eae6893ec49
Signed-off-by: Dima Zavin <dima@android.com>
13 years agoARM: common: fiq_debugger: add suspend/resume handlers
Dima Zavin [Mon, 10 Oct 2011 22:24:34 +0000 (15:24 -0700)]
ARM: common: fiq_debugger: add suspend/resume handlers

Change-Id: If6eb75059fdf4867eb9a974d60b9d50e5e3350d4
Signed-off-by: Dima Zavin <dima@android.com>