1fada1935SMauro Carvalho Chehab /* 2fada1935SMauro Carvalho Chehab * dvb_net.h 3fada1935SMauro Carvalho Chehab * 4fada1935SMauro Carvalho Chehab * Copyright (C) 2001 Ralph Metzler for convergence integrated media GmbH 5fada1935SMauro Carvalho Chehab * 6fada1935SMauro Carvalho Chehab * This program is free software; you can redistribute it and/or 7fada1935SMauro Carvalho Chehab * modify it under the terms of the GNU Lesser General Public License 8fada1935SMauro Carvalho Chehab * as published by the Free Software Foundation; either version 2.1 9fada1935SMauro Carvalho Chehab * of the License, or (at your option) any later version. 10fada1935SMauro Carvalho Chehab * 11fada1935SMauro Carvalho Chehab * This program is distributed in the hope that it will be useful, 12fada1935SMauro Carvalho Chehab * but WITHOUT ANY WARRANTY; without even the implied warranty of 13fada1935SMauro Carvalho Chehab * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14fada1935SMauro Carvalho Chehab * GNU General Public License for more details. 15fada1935SMauro Carvalho Chehab * 16fada1935SMauro Carvalho Chehab */ 17fada1935SMauro Carvalho Chehab 18fada1935SMauro Carvalho Chehab #ifndef _DVB_NET_H_ 19fada1935SMauro Carvalho Chehab #define _DVB_NET_H_ 20fada1935SMauro Carvalho Chehab 21fada1935SMauro Carvalho Chehab #include <linux/module.h> 22fada1935SMauro Carvalho Chehab 23fada1935SMauro Carvalho Chehab #include <media/dvbdev.h> 24fada1935SMauro Carvalho Chehab 25de163422SJakub Kicinski struct net_device; 26de163422SJakub Kicinski 27fada1935SMauro Carvalho Chehab #define DVB_NET_DEVICES_MAX 10 28fada1935SMauro Carvalho Chehab 29fada1935SMauro Carvalho Chehab #ifdef CONFIG_DVB_NET 30fada1935SMauro Carvalho Chehab 31fada1935SMauro Carvalho Chehab /** 32fada1935SMauro Carvalho Chehab * struct dvb_net - describes a DVB network interface 33fada1935SMauro Carvalho Chehab * 34fada1935SMauro Carvalho Chehab * @dvbdev: pointer to &struct dvb_device. 35fada1935SMauro Carvalho Chehab * @device: array of pointers to &struct net_device. 36fada1935SMauro Carvalho Chehab * @state: array of integers to each net device. A value 37fada1935SMauro Carvalho Chehab * different than zero means that the interface is 38fada1935SMauro Carvalho Chehab * in usage. 39fada1935SMauro Carvalho Chehab * @exit: flag to indicate when the device is being removed. 40fada1935SMauro Carvalho Chehab * @demux: pointer to &struct dmx_demux. 41fada1935SMauro Carvalho Chehab * @ioctl_mutex: protect access to this struct. 42*4172385bSHyunwoo Kim * @remove_mutex: mutex that avoids a race condition between a callback 43*4172385bSHyunwoo Kim * called when the hardware is disconnected and the 44*4172385bSHyunwoo Kim * file_operations of dvb_net. 45fada1935SMauro Carvalho Chehab * 46fada1935SMauro Carvalho Chehab * Currently, the core supports up to %DVB_NET_DEVICES_MAX (10) network 47fada1935SMauro Carvalho Chehab * devices. 48fada1935SMauro Carvalho Chehab */ 49fada1935SMauro Carvalho Chehab 50fada1935SMauro Carvalho Chehab struct dvb_net { 51fada1935SMauro Carvalho Chehab struct dvb_device *dvbdev; 52fada1935SMauro Carvalho Chehab struct net_device *device[DVB_NET_DEVICES_MAX]; 53fada1935SMauro Carvalho Chehab int state[DVB_NET_DEVICES_MAX]; 54fada1935SMauro Carvalho Chehab unsigned int exit:1; 55fada1935SMauro Carvalho Chehab struct dmx_demux *demux; 56fada1935SMauro Carvalho Chehab struct mutex ioctl_mutex; 57*4172385bSHyunwoo Kim struct mutex remove_mutex; 58fada1935SMauro Carvalho Chehab }; 59fada1935SMauro Carvalho Chehab 60fada1935SMauro Carvalho Chehab /** 61fada1935SMauro Carvalho Chehab * dvb_net_init - nitializes a digital TV network device and registers it. 62fada1935SMauro Carvalho Chehab * 63fada1935SMauro Carvalho Chehab * @adap: pointer to &struct dvb_adapter. 64fada1935SMauro Carvalho Chehab * @dvbnet: pointer to &struct dvb_net. 65fada1935SMauro Carvalho Chehab * @dmxdemux: pointer to &struct dmx_demux. 66fada1935SMauro Carvalho Chehab */ 67fada1935SMauro Carvalho Chehab int dvb_net_init(struct dvb_adapter *adap, struct dvb_net *dvbnet, 68fada1935SMauro Carvalho Chehab struct dmx_demux *dmxdemux); 69fada1935SMauro Carvalho Chehab 70fada1935SMauro Carvalho Chehab /** 71fada1935SMauro Carvalho Chehab * dvb_net_release - releases a digital TV network device and unregisters it. 72fada1935SMauro Carvalho Chehab * 73fada1935SMauro Carvalho Chehab * @dvbnet: pointer to &struct dvb_net. 74fada1935SMauro Carvalho Chehab */ 75fada1935SMauro Carvalho Chehab void dvb_net_release(struct dvb_net *dvbnet); 76fada1935SMauro Carvalho Chehab 77fada1935SMauro Carvalho Chehab #else 78fada1935SMauro Carvalho Chehab 79fada1935SMauro Carvalho Chehab struct dvb_net { 80fada1935SMauro Carvalho Chehab struct dvb_device *dvbdev; 81fada1935SMauro Carvalho Chehab }; 82fada1935SMauro Carvalho Chehab dvb_net_release(struct dvb_net * dvbnet)83fada1935SMauro Carvalho Chehabstatic inline void dvb_net_release(struct dvb_net *dvbnet) 84fada1935SMauro Carvalho Chehab { 85fada1935SMauro Carvalho Chehab } 86fada1935SMauro Carvalho Chehab dvb_net_init(struct dvb_adapter * adap,struct dvb_net * dvbnet,struct dmx_demux * dmx)87fada1935SMauro Carvalho Chehabstatic inline int dvb_net_init(struct dvb_adapter *adap, 88fada1935SMauro Carvalho Chehab struct dvb_net *dvbnet, struct dmx_demux *dmx) 89fada1935SMauro Carvalho Chehab { 90fada1935SMauro Carvalho Chehab return 0; 91fada1935SMauro Carvalho Chehab } 92fada1935SMauro Carvalho Chehab 93fada1935SMauro Carvalho Chehab #endif /* ifdef CONFIG_DVB_NET */ 94fada1935SMauro Carvalho Chehab 95fada1935SMauro Carvalho Chehab #endif 96