Commit | Line | Data |
---|---|---|
26e0ca22 LP |
1 | /* |
2 | * vsp1.h -- R-Car VSP1 Driver | |
3 | * | |
8a1edc55 | 4 | * Copyright (C) 2013-2014 Renesas Electronics Corporation |
26e0ca22 LP |
5 | * |
6 | * Contact: Laurent Pinchart (laurent.pinchart@ideasonboard.com) | |
7 | * | |
8 | * This program is free software; you can redistribute it and/or modify | |
9 | * it under the terms of the GNU General Public License as published by | |
10 | * the Free Software Foundation; either version 2 of the License, or | |
11 | * (at your option) any later version. | |
12 | */ | |
13 | #ifndef __VSP1_H__ | |
14 | #define __VSP1_H__ | |
15 | ||
16 | #include <linux/io.h> | |
17 | #include <linux/list.h> | |
18 | #include <linux/mutex.h> | |
19 | #include <linux/platform_data/vsp1.h> | |
20 | ||
21 | #include <media/media-device.h> | |
22 | #include <media/v4l2-device.h> | |
23 | #include <media/v4l2-subdev.h> | |
24 | ||
25 | #include "vsp1_regs.h" | |
26 | ||
27 | struct clk; | |
28 | struct device; | |
29 | ||
30 | struct vsp1_platform_data; | |
629bb6d4 | 31 | struct vsp1_bru; |
5cdf5741 | 32 | struct vsp1_hsit; |
26e0ca22 | 33 | struct vsp1_lif; |
989af883 | 34 | struct vsp1_lut; |
26e0ca22 | 35 | struct vsp1_rwpf; |
a626e64e | 36 | struct vsp1_sru; |
26e0ca22 LP |
37 | struct vsp1_uds; |
38 | ||
7005a817 LP |
39 | #define VSP1_MAX_RPF 5 |
40 | #define VSP1_MAX_UDS 3 | |
41 | #define VSP1_MAX_WPF 4 | |
26e0ca22 LP |
42 | |
43 | struct vsp1_device { | |
44 | struct device *dev; | |
45 | struct vsp1_platform_data *pdata; | |
46 | ||
47 | void __iomem *mmio; | |
48 | struct clk *clock; | |
49 | ||
50 | struct mutex lock; | |
51 | int ref_count; | |
52 | ||
629bb6d4 | 53 | struct vsp1_bru *bru; |
5cdf5741 LP |
54 | struct vsp1_hsit *hsi; |
55 | struct vsp1_hsit *hst; | |
26e0ca22 | 56 | struct vsp1_lif *lif; |
989af883 | 57 | struct vsp1_lut *lut; |
7005a817 | 58 | struct vsp1_rwpf *rpf[VSP1_MAX_RPF]; |
a626e64e | 59 | struct vsp1_sru *sru; |
7005a817 LP |
60 | struct vsp1_uds *uds[VSP1_MAX_UDS]; |
61 | struct vsp1_rwpf *wpf[VSP1_MAX_WPF]; | |
26e0ca22 LP |
62 | |
63 | struct list_head entities; | |
64 | ||
65 | struct v4l2_device v4l2_dev; | |
66 | struct media_device media_dev; | |
67 | }; | |
68 | ||
4c16d6a0 | 69 | int vsp1_device_get(struct vsp1_device *vsp1); |
26e0ca22 LP |
70 | void vsp1_device_put(struct vsp1_device *vsp1); |
71 | ||
72 | static inline u32 vsp1_read(struct vsp1_device *vsp1, u32 reg) | |
73 | { | |
74 | return ioread32(vsp1->mmio + reg); | |
75 | } | |
76 | ||
77 | static inline void vsp1_write(struct vsp1_device *vsp1, u32 reg, u32 data) | |
78 | { | |
79 | iowrite32(data, vsp1->mmio + reg); | |
80 | } | |
81 | ||
82 | #endif /* __VSP1_H__ */ |