staging/mei: Interrupt handling.
authorOren Weil <oren.jer.weil@intel.com>
Sun, 15 May 2011 10:43:42 +0000 (13:43 +0300)
committerGreg Kroah-Hartman <gregkh@suse.de>
Wed, 18 May 2011 15:30:56 +0000 (08:30 -0700)
commitfb7d879f3b15056bf4f818e56b368ce76de2d5f3
treed753bc224e7b49e2ed15f6833931ae6bdfb1bf05
parentab841160d907bfc2305d3bf66d8275e807838e1a
staging/mei: Interrupt handling.

ISR and interrupt thread for handling incoming data.
e.g. read bus message, read client message, handle reset requests.

quick handler:
As MEI may share interrupt with GFX and/or USB
the HW register need to be checked and acknowledged.

thread handler:
Check if HW has data for read.
Write data to HW if possible.
May init reset flow on error

there can be two types of messages:
1) bus messages:
Management messages between MEI Driver and ME e.g.
Connect request/response,
Disconnect request/response
Enum clients request/response
Flow control request/response
those message are indicated by
ME Address/ID == 0 && Host Address/ID == 0

2) feature/client messages:
message that are sends between ME Feature/Client and
an application, the struct of the message is defined
by the ME Feature Protocol (e.g. APF Protocol, AMTHI Protocol)
those message are indicated by
ME Address/ID != 0 && Host Address/ID != 0

MEI Initialization state machine is also managed by this patch.
After MEI Reset is preform:
Send Start request
wait for answer
Send Enumerate Clients request
wait for answer
Send Get Client property for each client request
wait for answers
Init Done.

Signed-off-by: Tomas Winkler <tomas.winkler@intel.com>
Signed-off-by: Itzhak Tzeel-Krupp <itzhak.tzeel-krupp@intel.com>
Signed-off-by: Oren Weil <oren.jer.weil@intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
drivers/staging/mei/interrupt.c [new file with mode: 0644]