1 /*
2  * Copyright (c) 2014 Intel Corporation.  All rights reserved.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 #ifndef __DRM_VENDOR_API__
18 #define __DRM_VENDOR_API__
19 
20 #include <sepdrm.h>
21 #include <pr_drm_api.h>
22 #include <fcntl.h>
23 #include <linux/psb_drm.h>
24 #include "xf86drm.h"
25 #include "xf86drmMode.h"
26 
27 typedef uint32_t (*drm_keep_alive_t)(uint32_t session_id, uint32_t *timeout);
28 typedef uint32_t (*drm_start_playback_t)(void);
29 typedef uint32_t (*drm_stop_playback_t)(void);
30 typedef uint32_t (*drm_pr_return_naluheaders_t)(uint32_t session_id, struct drm_nalu_headers *nalu_info);
31 typedef uint32_t (*drm_wv_return_naluheaders_t)(uint32_t session_id, struct drm_wv_nalu_headers *nalu_info);
32 
33 struct drm_vendor_api {
34     void *handle;
35     drm_keep_alive_t drm_keep_alive;
36     drm_start_playback_t drm_start_playback;
37     drm_stop_playback_t drm_stop_playback;
38     drm_pr_return_naluheaders_t drm_pr_return_naluheaders;
39     drm_wv_return_naluheaders_t drm_wv_return_naluheaders;
40 };
41 
42 /* Initialize the function pointers structure opening the vendor library
43    Returns 0 on case of success, 1 in case of error */
44 uint32_t drm_vendor_api_init(struct drm_vendor_api *api);
45 
46 /* Close the function pointers structure
47    Returns 0 on case of success, 1 in case of error */
48 uint32_t drm_vendor_api_deinit(struct drm_vendor_api *api);
49 
50 #endif  /* #ifndef __DRM_VENDOR_API__ */
51