xref: /openbmc/linux/drivers/media/platform/st/sti/c8sectpfe/c8sectpfe-common.h (revision 4f2c0a4acffbec01079c28f839422e64ddeff004)
1*e7b8153eSMauro Carvalho Chehab /* SPDX-License-Identifier: GPL-2.0 */
2*e7b8153eSMauro Carvalho Chehab /*
3*e7b8153eSMauro Carvalho Chehab  * c8sectpfe-common.h - C8SECTPFE STi DVB driver
4*e7b8153eSMauro Carvalho Chehab  *
5*e7b8153eSMauro Carvalho Chehab  * Copyright (c) STMicroelectronics 2015
6*e7b8153eSMauro Carvalho Chehab  *
7*e7b8153eSMauro Carvalho Chehab  *   Author: Peter Griffin <peter.griffin@linaro.org>
8*e7b8153eSMauro Carvalho Chehab  *
9*e7b8153eSMauro Carvalho Chehab  */
10*e7b8153eSMauro Carvalho Chehab #ifndef _C8SECTPFE_COMMON_H_
11*e7b8153eSMauro Carvalho Chehab #define _C8SECTPFE_COMMON_H_
12*e7b8153eSMauro Carvalho Chehab 
13*e7b8153eSMauro Carvalho Chehab #include <linux/dvb/dmx.h>
14*e7b8153eSMauro Carvalho Chehab #include <linux/dvb/frontend.h>
15*e7b8153eSMauro Carvalho Chehab #include <linux/gpio.h>
16*e7b8153eSMauro Carvalho Chehab 
17*e7b8153eSMauro Carvalho Chehab #include <media/dmxdev.h>
18*e7b8153eSMauro Carvalho Chehab #include <media/dvb_demux.h>
19*e7b8153eSMauro Carvalho Chehab #include <media/dvb_frontend.h>
20*e7b8153eSMauro Carvalho Chehab #include <media/dvb_net.h>
21*e7b8153eSMauro Carvalho Chehab 
22*e7b8153eSMauro Carvalho Chehab /* Maximum number of channels */
23*e7b8153eSMauro Carvalho Chehab #define C8SECTPFE_MAXADAPTER (4)
24*e7b8153eSMauro Carvalho Chehab #define C8SECTPFE_MAXCHANNEL 64
25*e7b8153eSMauro Carvalho Chehab #define STPTI_MAXCHANNEL 64
26*e7b8153eSMauro Carvalho Chehab 
27*e7b8153eSMauro Carvalho Chehab #define MAX_INPUTBLOCKS 7
28*e7b8153eSMauro Carvalho Chehab 
29*e7b8153eSMauro Carvalho Chehab struct c8sectpfe;
30*e7b8153eSMauro Carvalho Chehab struct stdemux;
31*e7b8153eSMauro Carvalho Chehab 
32*e7b8153eSMauro Carvalho Chehab struct stdemux {
33*e7b8153eSMauro Carvalho Chehab 	struct dvb_demux	dvb_demux;
34*e7b8153eSMauro Carvalho Chehab 	struct dmxdev		dmxdev;
35*e7b8153eSMauro Carvalho Chehab 	struct dmx_frontend	hw_frontend;
36*e7b8153eSMauro Carvalho Chehab 	struct dmx_frontend	mem_frontend;
37*e7b8153eSMauro Carvalho Chehab 	int			tsin_index;
38*e7b8153eSMauro Carvalho Chehab 	int			running_feed_count;
39*e7b8153eSMauro Carvalho Chehab 	struct			c8sectpfei *c8sectpfei;
40*e7b8153eSMauro Carvalho Chehab };
41*e7b8153eSMauro Carvalho Chehab 
42*e7b8153eSMauro Carvalho Chehab struct c8sectpfe {
43*e7b8153eSMauro Carvalho Chehab 	struct stdemux demux[MAX_INPUTBLOCKS];
44*e7b8153eSMauro Carvalho Chehab 	struct mutex lock;
45*e7b8153eSMauro Carvalho Chehab 	struct dvb_adapter adapter;
46*e7b8153eSMauro Carvalho Chehab 	struct device *device;
47*e7b8153eSMauro Carvalho Chehab 	int mapping;
48*e7b8153eSMauro Carvalho Chehab 	int num_feeds;
49*e7b8153eSMauro Carvalho Chehab };
50*e7b8153eSMauro Carvalho Chehab 
51*e7b8153eSMauro Carvalho Chehab /* Channel registration */
52*e7b8153eSMauro Carvalho Chehab int c8sectpfe_tuner_register_frontend(struct c8sectpfe **c8sectpfe,
53*e7b8153eSMauro Carvalho Chehab 					struct c8sectpfei *fei,
54*e7b8153eSMauro Carvalho Chehab 					void *start_feed,
55*e7b8153eSMauro Carvalho Chehab 					void *stop_feed);
56*e7b8153eSMauro Carvalho Chehab 
57*e7b8153eSMauro Carvalho Chehab void c8sectpfe_tuner_unregister_frontend(struct c8sectpfe *c8sectpfe,
58*e7b8153eSMauro Carvalho Chehab 						struct c8sectpfei *fei);
59*e7b8153eSMauro Carvalho Chehab 
60*e7b8153eSMauro Carvalho Chehab #endif
61