Andrew Jeffery | 4fe996c | 2018-02-27 12:16:48 +1030 | [diff] [blame] | 1 | /* SPDX-License-Identifier: Apache-2.0 */ |
| 2 | /* Copyright (C) 2018 IBM Corp. */ |
Suraj Jitindar Singh | e39c916 | 2017-03-28 10:47:43 +1100 | [diff] [blame] | 3 | |
Andrew Jeffery | a66bcea | 2018-08-08 17:03:10 +0930 | [diff] [blame] | 4 | #ifndef WINDOWS_H |
| 5 | #define WINDOWS_H |
Suraj Jitindar Singh | e39c916 | 2017-03-28 10:47:43 +1100 | [diff] [blame] | 6 | |
Andrew Jeffery | 651ff9d | 2018-08-08 17:06:11 +0930 | [diff] [blame] | 7 | #define WINDOWS_NO_FLUSH false |
| 8 | #define WINDOWS_WITH_FLUSH true |
Suraj Jitindar Singh | e39c916 | 2017-03-28 10:47:43 +1100 | [diff] [blame] | 9 | |
Andrew Jeffery | 2f342ef | 2017-04-11 13:20:43 +0930 | [diff] [blame] | 10 | #include "mbox.h" |
| 11 | |
Suraj Jitindar Singh | e39c916 | 2017-03-28 10:47:43 +1100 | [diff] [blame] | 12 | /* Initialisation Functions */ |
Andrew Jeffery | c1a67fa | 2018-08-08 17:07:38 +0930 | [diff] [blame] | 13 | int windows_init(struct mbox_context *context); |
Andrew Jeffery | f5f5142 | 2018-08-08 17:08:33 +0930 | [diff] [blame] | 14 | void windows_free(struct mbox_context *context); |
Suraj Jitindar Singh | e39c916 | 2017-03-28 10:47:43 +1100 | [diff] [blame] | 15 | /* Write From Window Functions */ |
Andrew Jeffery | 3200c07 | 2018-08-08 17:12:03 +0930 | [diff] [blame] | 16 | int window_flush_v1(struct mbox_context *context, |
Suraj Jitindar Singh | e39c916 | 2017-03-28 10:47:43 +1100 | [diff] [blame] | 17 | uint32_t offset_bytes, uint32_t count_bytes); |
Andrew Jeffery | 3200c07 | 2018-08-08 17:12:03 +0930 | [diff] [blame] | 18 | int window_flush(struct mbox_context *context, uint32_t offset, |
Suraj Jitindar Singh | e39c916 | 2017-03-28 10:47:43 +1100 | [diff] [blame] | 19 | uint32_t count, uint8_t type); |
| 20 | /* Window Management Functions */ |
Andrew Jeffery | 348ea79 | 2018-08-08 17:13:53 +0930 | [diff] [blame] | 21 | void windows_alloc_dirty_bytemap(struct mbox_context *context); |
Andrew Jeffery | 7d5ada6 | 2018-08-08 17:16:16 +0930 | [diff] [blame] | 22 | int window_set_bytemap(struct mbox_context *context, struct window_context *cur, |
Suraj Jitindar Singh | e39c916 | 2017-03-28 10:47:43 +1100 | [diff] [blame] | 23 | uint32_t offset, uint32_t size, uint8_t val); |
Andrew Jeffery | b65bb4c | 2018-08-08 17:18:24 +0930 | [diff] [blame] | 24 | void windows_close_current(struct mbox_context *context, bool set_bmc_event, |
Suraj Jitindar Singh | e39c916 | 2017-03-28 10:47:43 +1100 | [diff] [blame] | 25 | uint8_t flags); |
Andrew Jeffery | 5dc9f95 | 2018-08-08 17:21:34 +0930 | [diff] [blame] | 26 | void window_reset(struct mbox_context *context, struct window_context *window); |
Andrew Jeffery | d6a7426 | 2018-08-08 17:25:01 +0930 | [diff] [blame] | 27 | void windows_reset_all(struct mbox_context *context, bool set_bmc_event); |
Andrew Jeffery | 9412f05 | 2018-08-08 17:25:47 +0930 | [diff] [blame] | 28 | struct window_context *windows_find_oldest(struct mbox_context *context); |
Andrew Jeffery | d8c12e1 | 2018-08-08 17:26:31 +0930 | [diff] [blame] | 29 | struct window_context *windows_find_largest(struct mbox_context *context); |
Andrew Jeffery | 17c477a | 2018-08-08 17:27:19 +0930 | [diff] [blame] | 30 | struct window_context *windows_search(struct mbox_context *context, |
Suraj Jitindar Singh | e39c916 | 2017-03-28 10:47:43 +1100 | [diff] [blame] | 31 | uint32_t offset, bool exact); |
Andrew Jeffery | ebbfce5 | 2018-08-08 17:29:45 +0930 | [diff] [blame] | 32 | int windows_create_map(struct mbox_context *context, |
Suraj Jitindar Singh | e39c916 | 2017-03-28 10:47:43 +1100 | [diff] [blame] | 33 | struct window_context **this_window, |
| 34 | uint32_t offset, bool exact); |
| 35 | |
Andrew Jeffery | a66bcea | 2018-08-08 17:03:10 +0930 | [diff] [blame] | 36 | #endif /* WINDOWS_H */ |