History log of /drivers/misc/mei/pci-me.c
Revision Date Author Comments
ce23139c6c2ee92d5eace20f6f10d716cf295a5b 29-Sep-2014 Alexander Usyskin <alexander.usyskin@intel.com> mei: fix kernel-doc warnings

Add missed parameters descriptions and return values descriptions

Signed-off-by: Alexander Usyskin <alexander.usyskin@intel.com>
Signed-off-by: Tomas Winkler <tomas.winkler@intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
a8605ea2c20c2b97a54d7746c16ebef5ba29632a 29-Sep-2014 Alexander Usyskin <alexander.usyskin@intel.com> mei: fix KDoc documentation formatting

Fix Kdoc documentation formatting warnings
genertaed by ./scripts/kernel-doc

Signed-off-by: Alexander Usyskin <alexander.usyskin@intel.com>
Signed-off-by: Tomas Winkler <tomas.winkler@intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
d08b8fc0dbdbe9bf7edeb46f7a856f993630664f 29-Sep-2014 Tomas Winkler <tomas.winkler@intel.com> mei: remove the reference to pdev from mei_device

For purpose of adding testing HW we would like
to get rid of pci dependency in generic mei code.

Signed-off-by: Tomas Winkler <tomas.winkler@intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2bf94cabb199f73402a5ddefa4a7bf1a82aaeda5 29-Sep-2014 Tomas Winkler <tomas.winkler@intel.com> mei: get rid of most of the pci dependencies in mei

For purpose of adding testing HW we would like
to get rid of pci dependency in generic mei code
This patch provides only straight forward changes
FW status and prob quirks need to be handled separately

Signed-off-by: Tomas Winkler <tomas.winkler@intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
7efceb559579f11a05160ff92c12fc4c59a531d8 16-Sep-2014 Geert Uytterhoeven <geert+renesas@glider.be> mei: fix comments

Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
Acked-by: "Winkler, Tomas" <tomas.winkler@intel.com>
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
d5d83f8abea13d0b50ee762276c6c900d1946264 17-Jul-2014 Alexander Usyskin <alexander.usyskin@intel.com> mei: don't schedule suspend in pm idle

Calling pm_schedule_suspend from the runtime pm idle callback
may reschedule existing timer, thus in case of frequent runtime
rpm idle call the suspend maybe starved.
Instead we call pm_runtime_autosuspend which is checking if the
timer is already charged.

An example is monitoring device pci config space.
Pci config sysfs handlers calls pci_config_pm_runtime_put/get
helpers which in turns calls to device idle callback

Cc: stable@vger.kernel.org # 3.15+
Signed-off-by: Alexander Usyskin <alexander.usyskin@intel.com>
Signed-off-by: Tomas Winkler <tomas.winkler@intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
d238a0ec8b850e81185f1b176c1f436684ce476b 23-Jun-2014 Alexander Usyskin <alexander.usyskin@intel.com> mei: add WPT second mei interface

Add WPT second mei interface.

Signed-off-by: Alexander Usyskin <alexander.usyskin@intel.com>
Signed-off-by: Tomas Winkler <tomas.winkler@intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
f3d8e8788b4efbd13b6e888e85af51385d87d306 23-Jun-2014 Alexander Usyskin <alexander.usyskin@intel.com> mei: move from misc to char device

We need to support more then one mei interface
hence the simple misc devices is not longer an option

In order not break the user space a device with pci function 0
need to be linked to /dev/mei

Signed-off-by: Alexander Usyskin <alexander.usyskin@intel.com>
Signed-off-by: Tomas Winkler <tomas.winkler@intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
c919951d940f28b3b9eb208e289faa27f4bc4678 13-May-2014 Tomas Winkler <tomas.winkler@intel.com> mei: me: move probe quirk to cfg structure

Move quirk FW type detector to cfg structure

Signed-off-by: Alexander Usyskin <alexander.usyskin@intel.com>
Signed-off-by: Tomas Winkler <tomas.winkler@intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
8d929d4862fdfc4a524fd4c799b8dfa3b187fe8c 13-May-2014 Alexander Usyskin <alexander.usyskin@intel.com> mei: add per device configuration

Add mei_cfg structure that holds per device configuration
data and hooks, as the first step we add firmware
status register offsets

Signed-off-by: Alexander Usyskin <alexander.usyskin@intel.com>
Signed-off-by: Tomas Winkler <tomas.winkler@intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
e13fa90ce42d8e7ee501426ea414c8ae4a5366ef 18-Mar-2014 Tomas Winkler <tomas.winkler@intel.com> mei: me: use runtime PG pm domain for non wakeable devices

For non wakeable devices we can't use pci runtime framework
as we are not able to wakeup from D3 states.
Instead we create new pg runtime domain that only drives ME power
gating protocol to reduce the power consumption.

Signed-off-by: Tomas Winkler <tomas.winkler@intel.com>
Signed-off-by: Alexander Usyskin <alexander.usyskin@intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
180ea05bcedbd67bb22a426bb8d831075727e34a 18-Mar-2014 Tomas Winkler <tomas.winkler@intel.com> mei: me: add runtime pm framework

Add runtime pm framework for ME devices.
The runtime pm handlers are used to run
me power gating isolation protocol

Signed-off-by: Tomas Winkler <tomas.winkler@intel.com>
Signed-off-by: Alexander Usyskin <alexander.usyskin@intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
5e6533a6f52f1a8283b2f818f5828be99a417dd6 25-Mar-2014 Tomas Winkler <tomas.winkler@intel.com> mei: me: do not load the driver if the FW doesn't support MEI interface

NM and SPS FW types that may run on ME device on server platforms
do not have valid MEI/HECI interface and driver should not
be bound to it as this might lead to system hung.
In practice not all BIOSes effectively hide such devices from the
OS and in some cases it is not possible.

We determine FW type by examining Host FW status registers in order to
unbind the driver.
In this patch we are adding check for ME on Cougar Point, Lynx Point
Devices

Cc: stable <stable@vger.kernel.org> # 3.10+
Signed-off-by: Tomas Winkler <tomas.winkler@intel.com>
Tested-by: Nikola Ciprich <nikola.ciprich@linuxbox.cz>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
a05f8f86e49749f239c49257db1d3ac6f474f0dd 16-Mar-2014 Tomas Winkler <tomas.winkler@intel.com> mei: don't use deprecated DEFINE_PCI_DEVICE_TABLE macro

Using struct pci_device_id is preferred over
deprecated DEFINE_PCI_DEVICE_TABLE macro

Signed-off-by: Tomas Winkler <tomas.winkler@intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
80260f2360d34912cd8cb18aca6eda20e9db2ef0 11-Mar-2014 Tomas Winkler <tomas.winkler@intel.com> mei: drop pr_fmt macros

we are using dev_ logging facility so we don't need pr_fmt macros

Signed-off-by: Tomas Winkler <tomas.winkler@intel.com>
Reviewed-by: Alexander Usyskin <alexander.usyskin@intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
6e4cd27a35622cddbe6c0d6fbeb9da8c232029d1 11-Mar-2014 Tomas Winkler <tomas.winkler@intel.com> mei: make me hw headers private to me hw.

Remove includes of me-hw.h and me-hw-regs.h headers from
the mei generic code.
The mei layer should not depend on hw specific headers

Signed-off-by: Tomas Winkler <tomas.winkler@intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
16833257a1ee9f7b2c997f0a26f91b1d9055642c 18-Feb-2014 Alexander Usyskin <alexander.usyskin@intel.com> mei: me: put pm callbacks under PM_SLEEP ifdef

This will eliminate compilation warning:

drivers/misc/mei/pci-me.c:303:12: warning: mei_me_pci_suspend defined but not used [-Wunused-function]
static int mei_me_pci_suspend(struct device *device)
drivers/misc/mei/pci-me.c:323:12: warning: mei_me_pci_resume defined but not used [-Wunused-function]
static int mei_me_pci_resume(struct device *device)

Signed-off-by: Alexander Usyskin <alexander.usyskin@intel.com>
Signed-off-by: Tomas Winkler <tomas.winkler@intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
e2527ec3690bc820e5b4288577f79945f4a22d77 21-Jan-2014 Paul Gortmaker <paul.gortmaker@windriver.com> drivers/misc: delete non-required instances of include <linux/init.h>

None of these files are actually using any __init type directives
and hence don't need to include <linux/init.h>. Most are just a
left over from __devinit and __cpuinit removal, or simply due to
code getting copied from one driver to the next.

Cc: Arnd Bergmann <arnd@arndb.de>
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
33ec0826314734fc4f3c9bf37d12e98063339b31 11-Jan-2014 Tomas Winkler <tomas.winkler@intel.com> mei: revamp mei reset state machine

1. MEI_DEV_RESETTING device state spans only hardware reset flow
while starting dev state is saved into a local variable for further
reference, this let us to reduce big if statements in case we
are trying to avoid nested resets

2. During initializations if the reset ended in MEI_DEV_DISABLED device
state we bail out with -ENODEV

3. Remove redundant interrupts_enabled parameter as this
can be deduced from the starting dev_state

4. mei_reset propagates error code to the caller

5. Add mei_restart function to wrap the pci resume

Signed-off-by: Tomas Winkler <tomas.winkler@intel.com>
Signed-off-by: Alexander Usyskin <alexander.usyskin@intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
3ecfb168a51ddf0226abe245065516bc2ebfdef5 17-Dec-2013 Tomas Winkler <tomas.winkler@intel.com> mei: me: set dma mask using DMA mapping API

ME device is 64bit DMA capable
We assume both coherent and consistent memory to match

Signed-off-by: Tomas Winkler <tomas.winkler@intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
76a9635979e543f04a5885198e68ff28e3311b67 05-Dec-2013 Tomas Winkler <tomas.winkler@intel.com> mei: add 9 series PCH mei device ids

And Lynx Point H Refresh and Wildcat Point LP
device ids.

Signed-off-by: Tomas Winkler <tomas.winkler@intel.com>
Cc: stable <stable@vger.kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
dc844b0d99b8533d6174e5b9a369f7c2cdacfe66 11-Nov-2013 Tomas Winkler <tomas.winkler@intel.com> mei: remove flash_work_queue

Cancel each work properly and remove flash_work_queue.

Quoting documentation:

In most situations flushing the entire workqueue is overkill; you merely
need to know that a particular work item isn't queued and isn't running.
In such cases you should use cancel_delayed_work_sync() or
cancel_work_sync() instead.

Signed-off-by: Tomas Winkler <tomas.winkler@intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
c4e87b525936da188add18d53a0fe681c3c977ce 21-Oct-2013 Alexander Usyskin <alexander.usyskin@intel.com> mei: replace stray pr_debug with dev_dbg

Driver better use dev_dbg, not pr_debug.

Signed-off-by: Alexander Usyskin <alexander.usyskin@intel.com>
Signed-off-by: Tomas Winkler <tomas.winkler@intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
ed6f7ac1dcae0b95ef2946067beb4ffaba415119 17-Oct-2013 Paul Bolle <pebolle@tiscali.nl> mei: me: downgrade two errors to debug level

The mei_me driver prints "suspend" at error level at each suspend. It
also prints "stop" at error level at driver unload. Downgrade these
uninteresting messages to debug level.

Cc: Adam Jackson <ajax@redhat.com>
Cc: Joe Perches <joe@perches.com>
Signed-off-by: Paul Bolle <pebolle@tiscali.nl>
Signed-off-by: Tomas Winkler <tomas.winkler@intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
838b3a6d62413b336f3dde15ecff161070358957 15-Oct-2013 Tomas Winkler <tomas.winkler@intel.com> mei: me: add Lynx Point Wellsburg work station device id

add missing device id for LPT based work station

Signed-off-by: Tomas Winkler <tomas.winkler@intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
b9be2c60fce7a93723403488a2f5d508ff7d3d2f 23-Sep-2013 Jingoo Han <jg1.han@samsung.com> misc: mei: remove unnecessary pci_set_drvdata()

The driver core clears the driver data to NULL after device_release
or on probe failure. Thus, it is not needed to manually clear the
device driver data to NULL.

Signed-off-by: Jingoo Han <jg1.han@samsung.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
42f132febff3b7b42c6c9dbfc151f29233be3132 05-Jun-2013 Tomas Winkler <tomas.winkler@intel.com> mei: me: clear interrupts on the resume path

We need to clear pending interrupts on the resume
path. This brings the device into defined state
before starting the reset flow

This should solve suspend/resume issues:

mei_me : wait hw ready failed. status = 0x0
mei_me : version message write failed

Signed-off-by: Tomas Winkler <tomas.winkler@intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
c6148f8f8ceb18fd6ae3b637c56e8327b73873eb 29-May-2013 Tomas Winkler <tomas.winkler@intel.com> mei: me: remove artificial singleton requirement

There is only one device on the platform
drop mei_pdev and the mutex

Signed-off-by: Tomas Winkler <tomas.winkler@intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
30e53bb8ffb1f3270ad89196d9799057008d9537 05-Apr-2013 Tomas Winkler <tomas.winkler@intel.com> mei: add debugfs hooks

debugfs exposes device state and list of me clients and their
properties

Signed-off-by: Tomas Winkler <tomas.winkler@intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
393b148f9d0e70cfcb0096985bb0f0742802929e 04-Apr-2013 Masanari Iida <standby24x7@gmail.com> mei: Fix comments in drivers/misc/mei

Correct typos and fix stray comments.

Signed-off-by: Masanari Iida <standby24x7@gmail.com>
Acked-by: Winkler, Tomas <tomas.winkler@intel.com>
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
cf3baefba04073237decb1b8a8c114b0b45bfc80 27-Mar-2013 Samuel Ortiz <sameo@linux.intel.com> mei: bus: Call bus routines from the core code

Register the MEI bus type against the kernel core bus APIs and
call the bus Rx handler from interrupt.c

Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
Signed-off-by: Tomas Winkler <tomas.winkler@intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
b68301e9acd30f7fd63533a145f5e003e25ac9bd 27-Mar-2013 Tomas Winkler <tomas.winkler@intel.com> mei: prefix me hardware specific functions with mei_me_

Signed-off-by: Tomas Winkler <tomas.winkler@intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
c4d589be4405d475f7b529134debdf37f1ada957 27-Mar-2013 Tomas Winkler <tomas.winkler@intel.com> mei: rename function mei_hw_init to mei_start

The hw initialization is now done as part of
hw specific code this makes the name mei_hw_init little misleading.

We rename it to mei_start in spirit of already existing
functions mei_stop and mei_reset.

Signed-off-by: Tomas Winkler <tomas.winkler@intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2e64712450e30a445b5650d1205e1aaca811f084 27-Mar-2013 Tomas Winkler <tomas.winkler@intel.com> mei: unregister watchdog from mei_stop function

we need to unregister watchdog device both in suspend and remove
as the registration is recreated on reset

Signed-off-by: Tomas Winkler <tomas.winkler@intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
7cb035d9e619a8d20f5d3b9791f8cb5160d19e70 10-Mar-2013 Tomas Winkler <tomas.winkler@intel.com> mei: add mei_stop function to stop mei device

mei_stop calls mei_reset with disabling the interrupts.
It will have the same effect as the open code it replaces in the mei_remove.

The reset sequence on remove is required for the Lynx Point LP devices
to clean the reset state.

mei_stop is called from mei_pci_suspend and mei_remove functions

Signed-off-by: Tomas Winkler <tomas.winkler@intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
06ecd6459800962155c485e27d9dd30268b579bf 06-Feb-2013 Tomas Winkler <tomas.winkler@intel.com> mei: move interrupt handlers to be me hw specific

interrupt handler are platform specifics so we move
them to hw-mei.c. For sake of that we need to export
write, read, and complete handlers from the interrupt.c

Signed-off-by: Tomas Winkler <tomas.winkler@intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
52c34561415b420301f1580413a9d1891d079494 06-Feb-2013 Tomas Winkler <tomas.winkler@intel.com> mei: initial extract of ME hw specifics from mei_device

This is initial step of move the ME hw specifics
out of mei_device structure into mei_me_hw

Signed-off-by: Tomas Winkler <tomas.winkler@intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2703d4b2e673cc240ad06d79d131fd1d0f77d65d 06-Feb-2013 Tomas Winkler <tomas.winkler@intel.com> mei: sperate interface and pci code into two files

leave misc file operations in the main
and move PCI related code into pci-me

Signed-off-by: Tomas Winkler <tomas.winkler@intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>