162306a36Sopenharmony_ci/* 262306a36Sopenharmony_ci * dvb_net.h 362306a36Sopenharmony_ci * 462306a36Sopenharmony_ci * Copyright (C) 2001 Ralph Metzler for convergence integrated media GmbH 562306a36Sopenharmony_ci * 662306a36Sopenharmony_ci * This program is free software; you can redistribute it and/or 762306a36Sopenharmony_ci * modify it under the terms of the GNU Lesser General Public License 862306a36Sopenharmony_ci * as published by the Free Software Foundation; either version 2.1 962306a36Sopenharmony_ci * of the License, or (at your option) any later version. 1062306a36Sopenharmony_ci * 1162306a36Sopenharmony_ci * This program is distributed in the hope that it will be useful, 1262306a36Sopenharmony_ci * but WITHOUT ANY WARRANTY; without even the implied warranty of 1362306a36Sopenharmony_ci * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 1462306a36Sopenharmony_ci * GNU General Public License for more details. 1562306a36Sopenharmony_ci * 1662306a36Sopenharmony_ci */ 1762306a36Sopenharmony_ci 1862306a36Sopenharmony_ci#ifndef _DVB_NET_H_ 1962306a36Sopenharmony_ci#define _DVB_NET_H_ 2062306a36Sopenharmony_ci 2162306a36Sopenharmony_ci#include <linux/module.h> 2262306a36Sopenharmony_ci 2362306a36Sopenharmony_ci#include <media/dvbdev.h> 2462306a36Sopenharmony_ci 2562306a36Sopenharmony_cistruct net_device; 2662306a36Sopenharmony_ci 2762306a36Sopenharmony_ci#define DVB_NET_DEVICES_MAX 10 2862306a36Sopenharmony_ci 2962306a36Sopenharmony_ci#ifdef CONFIG_DVB_NET 3062306a36Sopenharmony_ci 3162306a36Sopenharmony_ci/** 3262306a36Sopenharmony_ci * struct dvb_net - describes a DVB network interface 3362306a36Sopenharmony_ci * 3462306a36Sopenharmony_ci * @dvbdev: pointer to &struct dvb_device. 3562306a36Sopenharmony_ci * @device: array of pointers to &struct net_device. 3662306a36Sopenharmony_ci * @state: array of integers to each net device. A value 3762306a36Sopenharmony_ci * different than zero means that the interface is 3862306a36Sopenharmony_ci * in usage. 3962306a36Sopenharmony_ci * @exit: flag to indicate when the device is being removed. 4062306a36Sopenharmony_ci * @demux: pointer to &struct dmx_demux. 4162306a36Sopenharmony_ci * @ioctl_mutex: protect access to this struct. 4262306a36Sopenharmony_ci * @remove_mutex: mutex that avoids a race condition between a callback 4362306a36Sopenharmony_ci * called when the hardware is disconnected and the 4462306a36Sopenharmony_ci * file_operations of dvb_net. 4562306a36Sopenharmony_ci * 4662306a36Sopenharmony_ci * Currently, the core supports up to %DVB_NET_DEVICES_MAX (10) network 4762306a36Sopenharmony_ci * devices. 4862306a36Sopenharmony_ci */ 4962306a36Sopenharmony_ci 5062306a36Sopenharmony_cistruct dvb_net { 5162306a36Sopenharmony_ci struct dvb_device *dvbdev; 5262306a36Sopenharmony_ci struct net_device *device[DVB_NET_DEVICES_MAX]; 5362306a36Sopenharmony_ci int state[DVB_NET_DEVICES_MAX]; 5462306a36Sopenharmony_ci unsigned int exit:1; 5562306a36Sopenharmony_ci struct dmx_demux *demux; 5662306a36Sopenharmony_ci struct mutex ioctl_mutex; 5762306a36Sopenharmony_ci struct mutex remove_mutex; 5862306a36Sopenharmony_ci}; 5962306a36Sopenharmony_ci 6062306a36Sopenharmony_ci/** 6162306a36Sopenharmony_ci * dvb_net_init - nitializes a digital TV network device and registers it. 6262306a36Sopenharmony_ci * 6362306a36Sopenharmony_ci * @adap: pointer to &struct dvb_adapter. 6462306a36Sopenharmony_ci * @dvbnet: pointer to &struct dvb_net. 6562306a36Sopenharmony_ci * @dmxdemux: pointer to &struct dmx_demux. 6662306a36Sopenharmony_ci */ 6762306a36Sopenharmony_ciint dvb_net_init(struct dvb_adapter *adap, struct dvb_net *dvbnet, 6862306a36Sopenharmony_ci struct dmx_demux *dmxdemux); 6962306a36Sopenharmony_ci 7062306a36Sopenharmony_ci/** 7162306a36Sopenharmony_ci * dvb_net_release - releases a digital TV network device and unregisters it. 7262306a36Sopenharmony_ci * 7362306a36Sopenharmony_ci * @dvbnet: pointer to &struct dvb_net. 7462306a36Sopenharmony_ci */ 7562306a36Sopenharmony_civoid dvb_net_release(struct dvb_net *dvbnet); 7662306a36Sopenharmony_ci 7762306a36Sopenharmony_ci#else 7862306a36Sopenharmony_ci 7962306a36Sopenharmony_cistruct dvb_net { 8062306a36Sopenharmony_ci struct dvb_device *dvbdev; 8162306a36Sopenharmony_ci}; 8262306a36Sopenharmony_ci 8362306a36Sopenharmony_cistatic inline void dvb_net_release(struct dvb_net *dvbnet) 8462306a36Sopenharmony_ci{ 8562306a36Sopenharmony_ci} 8662306a36Sopenharmony_ci 8762306a36Sopenharmony_cistatic inline int dvb_net_init(struct dvb_adapter *adap, 8862306a36Sopenharmony_ci struct dvb_net *dvbnet, struct dmx_demux *dmx) 8962306a36Sopenharmony_ci{ 9062306a36Sopenharmony_ci return 0; 9162306a36Sopenharmony_ci} 9262306a36Sopenharmony_ci 9362306a36Sopenharmony_ci#endif /* ifdef CONFIG_DVB_NET */ 9462306a36Sopenharmony_ci 9562306a36Sopenharmony_ci#endif 96