gpu: host1x: Expose syncpt and channel functionality
Expose the buffer objects, syncpoint and channel functionality in the public public header so that drivers can use them. Signed-off-by: Thierry Reding <treding@nvidia.com>
This commit is contained in:
@@ -20,6 +20,7 @@
|
||||
#define __HOST1X_SYNCPT_H
|
||||
|
||||
#include <linux/atomic.h>
|
||||
#include <linux/host1x.h>
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/sched.h>
|
||||
|
||||
@@ -50,25 +51,6 @@ int host1x_syncpt_init(struct host1x *host);
|
||||
/* Free sync point array */
|
||||
void host1x_syncpt_deinit(struct host1x *host);
|
||||
|
||||
/*
|
||||
* Read max. It indicates how many operations there are in queue, either in
|
||||
* channel or in a software thread.
|
||||
* */
|
||||
static inline u32 host1x_syncpt_read_max(struct host1x_syncpt *sp)
|
||||
{
|
||||
smp_rmb();
|
||||
return (u32)atomic_read(&sp->max_val);
|
||||
}
|
||||
|
||||
/*
|
||||
* Read min, which is a shadow of the current sync point value in hardware.
|
||||
*/
|
||||
static inline u32 host1x_syncpt_read_min(struct host1x_syncpt *sp)
|
||||
{
|
||||
smp_rmb();
|
||||
return (u32)atomic_read(&sp->min_val);
|
||||
}
|
||||
|
||||
/* Return number of sync point supported. */
|
||||
int host1x_syncpt_nb_pts(struct host1x *host);
|
||||
|
||||
@@ -112,9 +94,6 @@ static inline bool host1x_syncpt_idle(struct host1x_syncpt *sp)
|
||||
return (min == max);
|
||||
}
|
||||
|
||||
/* Return pointer to struct denoting sync point id. */
|
||||
struct host1x_syncpt *host1x_syncpt_get(struct host1x *host, u32 id);
|
||||
|
||||
/* Load current value from hardware to the shadow register. */
|
||||
u32 host1x_syncpt_load(struct host1x_syncpt *sp);
|
||||
|
||||
@@ -130,16 +109,9 @@ void host1x_syncpt_restore(struct host1x *host);
|
||||
/* Read current wait base value into shadow register and return it. */
|
||||
u32 host1x_syncpt_load_wait_base(struct host1x_syncpt *sp);
|
||||
|
||||
/* Request incrementing a sync point. */
|
||||
int host1x_syncpt_incr(struct host1x_syncpt *sp);
|
||||
|
||||
/* Indicate future operations by incrementing the sync point max. */
|
||||
u32 host1x_syncpt_incr_max(struct host1x_syncpt *sp, u32 incrs);
|
||||
|
||||
/* Wait until sync point reaches a threshold value, or a timeout. */
|
||||
int host1x_syncpt_wait(struct host1x_syncpt *sp, u32 thresh,
|
||||
long timeout, u32 *value);
|
||||
|
||||
/* Check if sync point id is valid. */
|
||||
static inline int host1x_syncpt_is_valid(struct host1x_syncpt *sp)
|
||||
{
|
||||
@@ -149,14 +121,4 @@ static inline int host1x_syncpt_is_valid(struct host1x_syncpt *sp)
|
||||
/* Patch a wait by replacing it with a wait for syncpt 0 value 0 */
|
||||
int host1x_syncpt_patch_wait(struct host1x_syncpt *sp, void *patch_addr);
|
||||
|
||||
/* Return id of the sync point */
|
||||
u32 host1x_syncpt_id(struct host1x_syncpt *sp);
|
||||
|
||||
/* Allocate a sync point for a device. */
|
||||
struct host1x_syncpt *host1x_syncpt_request(struct device *dev,
|
||||
bool client_managed);
|
||||
|
||||
/* Free a sync point. */
|
||||
void host1x_syncpt_free(struct host1x_syncpt *sp);
|
||||
|
||||
#endif
|
||||
|
Reference in New Issue
Block a user