You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
71 lines
2.0 KiB
71 lines
2.0 KiB
/* |
|
* Copyright (C) 2013 Google, Inc. |
|
* |
|
* This software is licensed under the terms of the GNU General Public |
|
* License version 2, as published by the Free Software Foundation, and |
|
* may be copied, distributed, and modified under those terms. |
|
* |
|
* This program is distributed in the hope that it will be useful, |
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
* GNU General Public License for more details. |
|
* |
|
*/ |
|
|
|
#ifndef __VIDEO_ADF_ADF_H |
|
#define __VIDEO_ADF_ADF_H |
|
|
|
#include <linux/idr.h> |
|
#include <linux/list.h> |
|
#include <video/adf.h> |
|
#include "sync.h" |
|
|
|
struct adf_event_refcount { |
|
struct rb_node node; |
|
enum adf_event_type type; |
|
int refcount; |
|
}; |
|
|
|
void adf_buffer_cleanup(struct adf_buffer *buf); |
|
void adf_buffer_mapping_cleanup(struct adf_buffer_mapping *mapping, |
|
struct adf_buffer *buf); |
|
void adf_post_cleanup(struct adf_device *dev, struct adf_pending_post *post); |
|
|
|
struct adf_attachment_list *adf_attachment_find(struct list_head *list, |
|
struct adf_overlay_engine *eng, struct adf_interface *intf); |
|
int adf_attachment_validate(struct adf_device *dev, |
|
struct adf_overlay_engine *eng, struct adf_interface *intf); |
|
void adf_attachment_free(struct adf_attachment_list *attachment); |
|
|
|
struct adf_event_refcount *adf_obj_find_event_refcount(struct adf_obj *obj, |
|
enum adf_event_type type); |
|
|
|
static inline int adf_obj_check_supports_event(struct adf_obj *obj, |
|
enum adf_event_type type) |
|
{ |
|
if (!obj->ops || !obj->ops->supports_event) |
|
return -EOPNOTSUPP; |
|
if (!obj->ops->supports_event(obj, type)) |
|
return -EINVAL; |
|
return 0; |
|
} |
|
|
|
static inline int adf_device_attach_op(struct adf_device *dev, |
|
struct adf_overlay_engine *eng, struct adf_interface *intf) |
|
{ |
|
if (!dev->ops->attach) |
|
return 0; |
|
|
|
return dev->ops->attach(dev, eng, intf); |
|
} |
|
|
|
static inline int adf_device_detach_op(struct adf_device *dev, |
|
struct adf_overlay_engine *eng, struct adf_interface *intf) |
|
{ |
|
if (!dev->ops->detach) |
|
return 0; |
|
|
|
return dev->ops->detach(dev, eng, intf); |
|
} |
|
|
|
#endif /* __VIDEO_ADF_ADF_H */
|
|
|