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