Tomas Winkler | 9dc64d6 | 2013-01-08 23:07:17 +0200 | [diff] [blame^] | 1 | /* |
| 2 | * |
Tomas Winkler | 66ef5ea | 2012-12-25 19:06:02 +0200 | [diff] [blame] | 3 | * Intel Management Engine Interface (Intel MEI) Linux driver |
Tomas Winkler | 9dc64d6 | 2013-01-08 23:07:17 +0200 | [diff] [blame^] | 4 | * Copyright (c) 2003-2012, Intel Corporation. |
Tomas Winkler | 66ef5ea | 2012-12-25 19:06:02 +0200 | [diff] [blame] | 5 | * |
Tomas Winkler | 9dc64d6 | 2013-01-08 23:07:17 +0200 | [diff] [blame^] | 6 | * This program is free software; you can redistribute it and/or modify it |
| 7 | * under the terms and conditions of the GNU General Public License, |
| 8 | * version 2, as published by the Free Software Foundation. |
Tomas Winkler | 66ef5ea | 2012-12-25 19:06:02 +0200 | [diff] [blame] | 9 | * |
Tomas Winkler | 9dc64d6 | 2013-01-08 23:07:17 +0200 | [diff] [blame^] | 10 | * This program is distributed in the hope it will be useful, but WITHOUT |
| 11 | * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
| 12 | * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for |
| 13 | * more details. |
Tomas Winkler | 66ef5ea | 2012-12-25 19:06:02 +0200 | [diff] [blame] | 14 | * |
Tomas Winkler | 66ef5ea | 2012-12-25 19:06:02 +0200 | [diff] [blame] | 15 | */ |
| 16 | |
Tomas Winkler | 66ef5ea | 2012-12-25 19:06:02 +0200 | [diff] [blame] | 17 | |
| 18 | |
Tomas Winkler | 9dc64d6 | 2013-01-08 23:07:17 +0200 | [diff] [blame^] | 19 | #ifndef _MEI_INTERFACE_H_ |
| 20 | #define _MEI_INTERFACE_H_ |
| 21 | |
| 22 | #include <linux/mei.h> |
| 23 | #include "mei_dev.h" |
Tomas Winkler | 66ef5ea | 2012-12-25 19:06:02 +0200 | [diff] [blame] | 24 | |
| 25 | |
Tomas Winkler | 66ef5ea | 2012-12-25 19:06:02 +0200 | [diff] [blame] | 26 | |
Tomas Winkler | 9dc64d6 | 2013-01-08 23:07:17 +0200 | [diff] [blame^] | 27 | void mei_read_slots(struct mei_device *dev, |
| 28 | unsigned char *buffer, |
| 29 | unsigned long buffer_length); |
| 30 | |
| 31 | int mei_write_message(struct mei_device *dev, |
| 32 | struct mei_msg_hdr *header, |
| 33 | unsigned char *buf); |
| 34 | |
| 35 | bool mei_hbuf_is_empty(struct mei_device *dev); |
| 36 | |
| 37 | int mei_hbuf_empty_slots(struct mei_device *dev); |
| 38 | |
| 39 | static inline size_t mei_hbuf_max_data(const struct mei_device *dev) |
| 40 | { |
| 41 | return dev->hbuf_depth * sizeof(u32) - sizeof(struct mei_msg_hdr); |
| 42 | } |
| 43 | |
| 44 | /* get slots (dwords) from a message length + header (bytes) */ |
| 45 | static inline unsigned char mei_data2slots(size_t length) |
| 46 | { |
| 47 | return DIV_ROUND_UP(sizeof(struct mei_msg_hdr) + length, 4); |
| 48 | } |
| 49 | |
| 50 | int mei_count_full_read_slots(struct mei_device *dev); |
| 51 | |
| 52 | #endif /* _MEI_INTERFACE_H_ */ |