Blame view
include/media/v4l2-clk.h
1.95 KB
d2912cb15
|
1 |
/* SPDX-License-Identifier: GPL-2.0-only */ |
ff5430de7
|
2 3 4 5 6 |
/* * V4L2 clock service * * Copyright (C) 2012-2013, Guennadi Liakhovetski <g.liakhovetski@gmx.de> * |
ff5430de7
|
7 8 9 10 11 12 13 14 |
* ATTENTION: This is a temporary API and it shall be replaced by the generic * clock API, when the latter becomes widely available. */ #ifndef MEDIA_V4L2_CLK_H #define MEDIA_V4L2_CLK_H #include <linux/atomic.h> |
cf326dfeb
|
15 |
#include <linux/export.h> |
ff5430de7
|
16 17 18 19 20 |
#include <linux/list.h> #include <linux/mutex.h> struct module; struct device; |
4f528afcf
|
21 |
struct clk; |
ff5430de7
|
22 23 24 25 |
struct v4l2_clk { struct list_head list; const struct v4l2_clk_ops *ops; const char *dev_id; |
ff5430de7
|
26 27 28 |
int enable; struct mutex lock; /* Protect the enable count */ atomic_t use_count; |
4f528afcf
|
29 |
struct clk *clk; |
ff5430de7
|
30 31 32 33 34 35 36 37 38 39 40 41 42 |
void *priv; }; struct v4l2_clk_ops { struct module *owner; int (*enable)(struct v4l2_clk *clk); void (*disable)(struct v4l2_clk *clk); unsigned long (*get_rate)(struct v4l2_clk *clk); int (*set_rate)(struct v4l2_clk *clk, unsigned long); }; struct v4l2_clk *v4l2_clk_register(const struct v4l2_clk_ops *ops, const char *dev_name, |
a37462b91
|
43 |
void *priv); |
ff5430de7
|
44 45 46 47 48 49 50 |
void v4l2_clk_unregister(struct v4l2_clk *clk); struct v4l2_clk *v4l2_clk_get(struct device *dev, const char *id); void v4l2_clk_put(struct v4l2_clk *clk); int v4l2_clk_enable(struct v4l2_clk *clk); void v4l2_clk_disable(struct v4l2_clk *clk); unsigned long v4l2_clk_get_rate(struct v4l2_clk *clk); int v4l2_clk_set_rate(struct v4l2_clk *clk, unsigned long rate); |
cf326dfeb
|
51 52 53 |
struct module; struct v4l2_clk *__v4l2_clk_register_fixed(const char *dev_id, |
a37462b91
|
54 |
unsigned long rate, struct module *owner); |
cf326dfeb
|
55 56 57 |
void v4l2_clk_unregister_fixed(struct v4l2_clk *clk); static inline struct v4l2_clk *v4l2_clk_register_fixed(const char *dev_id, |
cf326dfeb
|
58 59 |
unsigned long rate) { |
a37462b91
|
60 |
return __v4l2_clk_register_fixed(dev_id, rate, THIS_MODULE); |
cf326dfeb
|
61 |
} |
3d83078a0
|
62 |
#define V4L2_CLK_NAME_SIZE 64 |
774cc4c28
|
63 64 |
#define v4l2_clk_name_i2c(name, size, adap, client) snprintf(name, size, \ "%d-%04x", adap, client) |
68d9c47b1
|
65 66 |
#define v4l2_clk_name_of(name, size, node) snprintf(name, size, \ "of-%pOF", node) |
ac2841f3b
|
67 |
|
ff5430de7
|
68 |
#endif |