staging/mei: MEI link layer
authorOren Weil <oren.jer.weil@intel.com>
Sun, 15 May 2011 10:43:43 +0000 (13:43 +0300)
committerGreg Kroah-Hartman <gregkh@suse.de>
Wed, 18 May 2011 15:30:57 +0000 (08:30 -0700)
commit3ce72726c6790ffcf492c0689e5ee3a758bfb00e
tree9fe7875707c408ba76654d586242c5e7bdb1d073
parentfb7d879f3b15056bf4f818e56b368ce76de2d5f3
staging/mei: MEI link layer

Implementation of the communication between host and ME.
connect/disconnect to/from a client, send MEI message,
read MEI message, flow control handling.

Each MEI message has mei_msg_hdr followed by a payload.
Driver is oblivious the payload.

ME Address/ID  - This is the logical address of the ME
feature/client of that message.
Host Address/ID - This is the logical address of the Host
  client of that message
Length  - This is the Length of message payload in bytes
Reserved  -  reserved for future use.
Message Complete - This bit is used to indicative that
this is the last message of multi message
MEI transfer of a client message that is larger
then the MEI circular buffer.
Payload - Message payload (data) up to 512bytes

The HW data registers are consist two circular buffers,
one for data from ME and other data from Host application.
Each buffer has two pointers, read_ptr (H_CBRP)
and write_ptr (H_CBWP).
The buffers size is defined by depth value that exists
in the status registers (H_CBD and ME_CBD_HRA).
Every read from ME circular buffer cause read_ptr++
Every write to the Host  circular buffer write_ptr++

Flow control MEI message that ME and MEI Driver use to notify
each other that a ME feature/client or Host client buffer is ready
to receive data.

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/interface.c [new file with mode: 0644]
drivers/staging/mei/interface.h [new file with mode: 0644]