xref: /freebsd/sys/dev/video/video_if.m (revision 9c9428825f4c55e3cb37412c661bb9d385db4c68)
1*9c942882SAbdelkader Boudih#
2*9c942882SAbdelkader Boudih# Copyright (c) 2026 Abdelkader Boudih <freebsd@seuros.com>
3*9c942882SAbdelkader Boudih#
4*9c942882SAbdelkader Boudih# SPDX-License-Identifier: BSD-2-Clause
5*9c942882SAbdelkader Boudih#
6*9c942882SAbdelkader Boudih
7*9c942882SAbdelkader Boudih#include <sys/bus.h>
8*9c942882SAbdelkader Boudih#include <dev/video/video.h>
9*9c942882SAbdelkader Boudih
10*9c942882SAbdelkader BoudihINTERFACE video;
11*9c942882SAbdelkader Boudih
12*9c942882SAbdelkader BoudihCODE {
13*9c942882SAbdelkader Boudih	static int
14*9c942882SAbdelkader Boudih	video_default_open(device_t dev __unused)
15*9c942882SAbdelkader Boudih	{
16*9c942882SAbdelkader Boudih
17*9c942882SAbdelkader Boudih		return (0);
18*9c942882SAbdelkader Boudih	}
19*9c942882SAbdelkader Boudih
20*9c942882SAbdelkader Boudih	static void
21*9c942882SAbdelkader Boudih	video_default_close(device_t dev __unused)
22*9c942882SAbdelkader Boudih	{
23*9c942882SAbdelkader Boudih	}
24*9c942882SAbdelkader Boudih
25*9c942882SAbdelkader Boudih	static int
26*9c942882SAbdelkader Boudih	video_default_frmsize(device_t dev __unused,
27*9c942882SAbdelkader Boudih	    struct video_frmsizeenum *fs __unused)
28*9c942882SAbdelkader Boudih	{
29*9c942882SAbdelkader Boudih
30*9c942882SAbdelkader Boudih		return (ENOTTY);
31*9c942882SAbdelkader Boudih	}
32*9c942882SAbdelkader Boudih
33*9c942882SAbdelkader Boudih	static int
34*9c942882SAbdelkader Boudih	video_default_frmival(device_t dev __unused,
35*9c942882SAbdelkader Boudih	    struct video_frmivalenum *fi __unused)
36*9c942882SAbdelkader Boudih	{
37*9c942882SAbdelkader Boudih
38*9c942882SAbdelkader Boudih		return (ENOTTY);
39*9c942882SAbdelkader Boudih	}
40*9c942882SAbdelkader Boudih
41*9c942882SAbdelkader Boudih	static int
42*9c942882SAbdelkader Boudih	video_default_format(device_t dev __unused,
43*9c942882SAbdelkader Boudih	    struct video_format *fmt __unused)
44*9c942882SAbdelkader Boudih	{
45*9c942882SAbdelkader Boudih
46*9c942882SAbdelkader Boudih		return (ENOTTY);
47*9c942882SAbdelkader Boudih	}
48*9c942882SAbdelkader Boudih
49*9c942882SAbdelkader Boudih	static int
50*9c942882SAbdelkader Boudih	video_default_fract(device_t dev __unused,
51*9c942882SAbdelkader Boudih	    struct video_fract *fr __unused)
52*9c942882SAbdelkader Boudih	{
53*9c942882SAbdelkader Boudih
54*9c942882SAbdelkader Boudih		return (ENOTTY);
55*9c942882SAbdelkader Boudih	}
56*9c942882SAbdelkader Boudih
57*9c942882SAbdelkader Boudih	static int
58*9c942882SAbdelkader Boudih	video_default_enum_input(device_t dev __unused, uint32_t index __unused,
59*9c942882SAbdelkader Boudih	    struct video_input *inp __unused)
60*9c942882SAbdelkader Boudih	{
61*9c942882SAbdelkader Boudih
62*9c942882SAbdelkader Boudih		return (ENOTTY);
63*9c942882SAbdelkader Boudih	}
64*9c942882SAbdelkader Boudih
65*9c942882SAbdelkader Boudih	static int
66*9c942882SAbdelkader Boudih	video_default_get_input(device_t dev __unused, uint32_t *idx __unused)
67*9c942882SAbdelkader Boudih	{
68*9c942882SAbdelkader Boudih
69*9c942882SAbdelkader Boudih		return (ENOTTY);
70*9c942882SAbdelkader Boudih	}
71*9c942882SAbdelkader Boudih
72*9c942882SAbdelkader Boudih	static int
73*9c942882SAbdelkader Boudih	video_default_set_input(device_t dev __unused, uint32_t idx __unused)
74*9c942882SAbdelkader Boudih	{
75*9c942882SAbdelkader Boudih
76*9c942882SAbdelkader Boudih		return (ENOTTY);
77*9c942882SAbdelkader Boudih	}
78*9c942882SAbdelkader Boudih
79*9c942882SAbdelkader Boudih	static int
80*9c942882SAbdelkader Boudih	video_default_query_control(device_t dev __unused,
81*9c942882SAbdelkader Boudih	    struct video_control_desc *d __unused)
82*9c942882SAbdelkader Boudih	{
83*9c942882SAbdelkader Boudih
84*9c942882SAbdelkader Boudih		return (ENOTTY);
85*9c942882SAbdelkader Boudih	}
86*9c942882SAbdelkader Boudih
87*9c942882SAbdelkader Boudih	static int
88*9c942882SAbdelkader Boudih	video_default_get_control(device_t dev __unused,
89*9c942882SAbdelkader Boudih	    struct video_control *c __unused)
90*9c942882SAbdelkader Boudih	{
91*9c942882SAbdelkader Boudih
92*9c942882SAbdelkader Boudih		return (ENOTTY);
93*9c942882SAbdelkader Boudih	}
94*9c942882SAbdelkader Boudih
95*9c942882SAbdelkader Boudih	static int
96*9c942882SAbdelkader Boudih	video_default_set_control(device_t dev __unused,
97*9c942882SAbdelkader Boudih	    const struct video_control *c __unused)
98*9c942882SAbdelkader Boudih	{
99*9c942882SAbdelkader Boudih
100*9c942882SAbdelkader Boudih		return (ENOTTY);
101*9c942882SAbdelkader Boudih	}
102*9c942882SAbdelkader Boudih};
103*9c942882SAbdelkader Boudih
104*9c942882SAbdelkader BoudihMETHOD int open {
105*9c942882SAbdelkader Boudih	device_t	dev;
106*9c942882SAbdelkader Boudih} DEFAULT video_default_open;
107*9c942882SAbdelkader Boudih
108*9c942882SAbdelkader BoudihMETHOD void close {
109*9c942882SAbdelkader Boudih	device_t	dev;
110*9c942882SAbdelkader Boudih} DEFAULT video_default_close;
111*9c942882SAbdelkader Boudih
112*9c942882SAbdelkader BoudihMETHOD int querycap {
113*9c942882SAbdelkader Boudih	device_t		 dev;
114*9c942882SAbdelkader Boudih	struct video_caps	*caps;
115*9c942882SAbdelkader Boudih};
116*9c942882SAbdelkader Boudih
117*9c942882SAbdelkader BoudihMETHOD int enum_format {
118*9c942882SAbdelkader Boudih	device_t		 dev;
119*9c942882SAbdelkader Boudih	uint32_t		 index;
120*9c942882SAbdelkader Boudih	struct video_format	*format;
121*9c942882SAbdelkader Boudih};
122*9c942882SAbdelkader Boudih
123*9c942882SAbdelkader BoudihMETHOD int enum_framesizes {
124*9c942882SAbdelkader Boudih	device_t			 dev;
125*9c942882SAbdelkader Boudih	struct video_frmsizeenum	*fsize;
126*9c942882SAbdelkader Boudih} DEFAULT video_default_frmsize;
127*9c942882SAbdelkader Boudih
128*9c942882SAbdelkader BoudihMETHOD int enum_frameintervals {
129*9c942882SAbdelkader Boudih	device_t			 dev;
130*9c942882SAbdelkader Boudih	struct video_frmivalenum	*fival;
131*9c942882SAbdelkader Boudih} DEFAULT video_default_frmival;
132*9c942882SAbdelkader Boudih
133*9c942882SAbdelkader BoudihMETHOD int try_format {
134*9c942882SAbdelkader Boudih	device_t		 dev;
135*9c942882SAbdelkader Boudih	struct video_format	*format;
136*9c942882SAbdelkader Boudih} DEFAULT video_default_format;
137*9c942882SAbdelkader Boudih
138*9c942882SAbdelkader BoudihMETHOD int set_format {
139*9c942882SAbdelkader Boudih	device_t			 dev;
140*9c942882SAbdelkader Boudih	const struct video_format	*format;
141*9c942882SAbdelkader Boudih};
142*9c942882SAbdelkader Boudih
143*9c942882SAbdelkader BoudihMETHOD int get_format {
144*9c942882SAbdelkader Boudih	device_t		 dev;
145*9c942882SAbdelkader Boudih	struct video_format	*format;
146*9c942882SAbdelkader Boudih};
147*9c942882SAbdelkader Boudih
148*9c942882SAbdelkader BoudihMETHOD int get_parm {
149*9c942882SAbdelkader Boudih	device_t		 dev;
150*9c942882SAbdelkader Boudih	struct video_fract	*fract;
151*9c942882SAbdelkader Boudih} DEFAULT video_default_fract;
152*9c942882SAbdelkader Boudih
153*9c942882SAbdelkader BoudihMETHOD int set_parm {
154*9c942882SAbdelkader Boudih	device_t		 dev;
155*9c942882SAbdelkader Boudih	struct video_fract	*fract;
156*9c942882SAbdelkader Boudih} DEFAULT video_default_fract;
157*9c942882SAbdelkader Boudih
158*9c942882SAbdelkader BoudihMETHOD int enum_input {
159*9c942882SAbdelkader Boudih	device_t		 dev;
160*9c942882SAbdelkader Boudih	uint32_t		 index;
161*9c942882SAbdelkader Boudih	struct video_input	*input;
162*9c942882SAbdelkader Boudih} DEFAULT video_default_enum_input;
163*9c942882SAbdelkader Boudih
164*9c942882SAbdelkader BoudihMETHOD int get_input {
165*9c942882SAbdelkader Boudih	device_t	 dev;
166*9c942882SAbdelkader Boudih	uint32_t	*index;
167*9c942882SAbdelkader Boudih} DEFAULT video_default_get_input;
168*9c942882SAbdelkader Boudih
169*9c942882SAbdelkader BoudihMETHOD int set_input {
170*9c942882SAbdelkader Boudih	device_t	dev;
171*9c942882SAbdelkader Boudih	uint32_t	index;
172*9c942882SAbdelkader Boudih} DEFAULT video_default_set_input;
173*9c942882SAbdelkader Boudih
174*9c942882SAbdelkader BoudihMETHOD int query_control {
175*9c942882SAbdelkader Boudih	device_t			 dev;
176*9c942882SAbdelkader Boudih	struct video_control_desc	*desc;
177*9c942882SAbdelkader Boudih} DEFAULT video_default_query_control;
178*9c942882SAbdelkader Boudih
179*9c942882SAbdelkader BoudihMETHOD int get_control {
180*9c942882SAbdelkader Boudih	device_t		 dev;
181*9c942882SAbdelkader Boudih	struct video_control	*control;
182*9c942882SAbdelkader Boudih} DEFAULT video_default_get_control;
183*9c942882SAbdelkader Boudih
184*9c942882SAbdelkader BoudihMETHOD int set_control {
185*9c942882SAbdelkader Boudih	device_t			 dev;
186*9c942882SAbdelkader Boudih	const struct video_control	*control;
187*9c942882SAbdelkader Boudih} DEFAULT video_default_set_control;
188*9c942882SAbdelkader Boudih
189*9c942882SAbdelkader Boudih# stop_stream must quiesce the provider before returning.
190*9c942882SAbdelkader BoudihMETHOD int start_stream {
191*9c942882SAbdelkader Boudih	device_t	dev;
192*9c942882SAbdelkader Boudih};
193*9c942882SAbdelkader Boudih
194*9c942882SAbdelkader BoudihMETHOD void stop_stream {
195*9c942882SAbdelkader Boudih	device_t	dev;
196*9c942882SAbdelkader Boudih};
197