On Wed, Sep 20, 2017 at 3:11 PM, Mauro Carvalho Chehab <mchehab@xxxxxxxxxxxxxxxx> wrote: > Enums can be documented via kernel-doc. So, convert the > DVB_DEVICE_* macros to an enum. > > Signed-off-by: Mauro Carvalho Chehab <mchehab@xxxxxxxxxxxxxxxx> > --- > drivers/media/dvb-core/dvbdev.c | 34 +++++++++++++++++++++++---- > drivers/media/dvb-core/dvbdev.h | 51 ++++++++++++++++++++++++++++------------- > 2 files changed, 64 insertions(+), 21 deletions(-) > > diff --git a/drivers/media/dvb-core/dvbdev.c b/drivers/media/dvb-core/dvbdev.c > index 41aad0f99d73..7b4cdcfbb02c 100644 > --- a/drivers/media/dvb-core/dvbdev.c > +++ b/drivers/media/dvb-core/dvbdev.c > @@ -51,8 +51,15 @@ static LIST_HEAD(dvb_adapter_list); > static DEFINE_MUTEX(dvbdev_register_lock); > > static const char * const dnames[] = { > - "video", "audio", "sec", "frontend", "demux", "dvr", "ca", > - "net", "osd" > + [DVB_DEVICE_VIDEO] = "video", > + [DVB_DEVICE_AUDIO] = "audio", > + [DVB_DEVICE_SEC] = "sec", > + [DVB_DEVICE_FRONTEND] = "frontend", > + [DVB_DEVICE_DEMUX] = "demux", > + [DVB_DEVICE_DVR] = "dvr", > + [DVB_DEVICE_CA] = "ca", > + [DVB_DEVICE_NET] = "net", > + [DVB_DEVICE_OSD] = "osd" > }; > > #ifdef CONFIG_DVB_DYNAMIC_MINORS > @@ -60,7 +67,24 @@ static const char * const dnames[] = { > #define DVB_MAX_IDS MAX_DVB_MINORS > #else > #define DVB_MAX_IDS 4 > -#define nums2minor(num, type, id) ((num << 6) | (id << 4) | type) > + > +static int nums2minor(int num, enum dvb_device_type type, int id) > +{ > + int n = (num << 6) | (id << 4); > + > + switch (type) { > + case DVB_DEVICE_VIDEO: return n; > + case DVB_DEVICE_AUDIO: return n | 1; > + case DVB_DEVICE_SEC: return n | 2; > + case DVB_DEVICE_FRONTEND: return n | 3; > + case DVB_DEVICE_DEMUX: return n | 4; > + case DVB_DEVICE_DVR: return n | 5; > + case DVB_DEVICE_CA: return n | 6; > + case DVB_DEVICE_NET: return n | 7; > + case DVB_DEVICE_OSD: return n | 8; > + } > +} > + > #define MAX_DVB_MINORS (DVB_MAX_ADAPTERS*64) > #endif > > @@ -426,8 +450,8 @@ static int dvb_register_media_device(struct dvb_device *dvbdev, > } > > int dvb_register_device(struct dvb_adapter *adap, struct dvb_device **pdvbdev, > - const struct dvb_device *template, void *priv, int type, > - int demux_sink_pads) > + const struct dvb_device *template, void *priv, > + enum dvb_device_type type, int demux_sink_pads) > { > struct dvb_device *dvbdev; > struct file_operations *dvbdevfops; > diff --git a/drivers/media/dvb-core/dvbdev.h b/drivers/media/dvb-core/dvbdev.h > index 49189392cf3b..53058da83873 100644 > --- a/drivers/media/dvb-core/dvbdev.h > +++ b/drivers/media/dvb-core/dvbdev.h > @@ -35,15 +35,37 @@ > > #define DVB_UNSET (-1) > > -#define DVB_DEVICE_VIDEO 0 > -#define DVB_DEVICE_AUDIO 1 > -#define DVB_DEVICE_SEC 2 > -#define DVB_DEVICE_FRONTEND 3 > -#define DVB_DEVICE_DEMUX 4 > -#define DVB_DEVICE_DVR 5 > -#define DVB_DEVICE_CA 6 > -#define DVB_DEVICE_NET 7 > -#define DVB_DEVICE_OSD 8 > +/* List of DVB device types */ > + > +/** > + * enum dvb_device_type - type of the Digital TV device > + * > + * @DVB_DEVICE_SEC: Digital TV standalone Common Interface (CI) > + * @DVB_DEVICE_FRONTEND: Digital TV frontend. > + * @DVB_DEVICE_DEMUX: Digital TV demux. > + * @DVB_DEVICE_DVR: Digital TV digital video record (DVR). > + * @DVB_DEVICE_CA: Digital TV Conditional Access (CA). > + * @DVB_DEVICE_NET: Digital TV network. > + * > + * @DVB_DEVICE_VIDEO: Digital TV video decoder. > + * Deprecated. Used only on av7110-av. > + * @DVB_DEVICE_AUDIO: Digital TV audio decoder. > + * Deprecated. Used only on av7110-av. > + * @DVB_DEVICE_OSD: Digital TV On Screen Display (OSD). > + * Deprecated. Used only on av7110. > + */ > +enum dvb_device_type { > + DVB_DEVICE_SEC, > + DVB_DEVICE_FRONTEND, > + DVB_DEVICE_DEMUX, > + DVB_DEVICE_DVR, > + DVB_DEVICE_CA, > + DVB_DEVICE_NET, > + > + DVB_DEVICE_VIDEO, > + DVB_DEVICE_AUDIO, > + DVB_DEVICE_OSD, > +}; maybe instead: ``` enum dvb_device_type { DVB_DEVICE_SEC = 0, DVB_DEVICE_FRONTEND = 1, DVB_DEVICE_DEMUX = 2, DVB_DEVICE_DVR = 3, DVB_DEVICE_CA = 4, DVB_DEVICE_NET = 5, DVB_DEVICE_VIDEO = 6, DVB_DEVICE_AUDIO = 7, DVB_DEVICE_OSD = 8, }; ``` ...and then maybe `nums2minor()` can be optimized to take advantage of that assignment. > > #define DVB_DEFINE_MOD_OPT_ADAPTER_NR(adapter_nr) \ > static short adapter_nr[] = \ > @@ -104,8 +126,7 @@ struct dvb_adapter { > * @list_head: List head with all DVB devices > * @fops: pointer to struct file_operations > * @adapter: pointer to the adapter that holds this device node > - * @type: type of the device: DVB_DEVICE_SEC, DVB_DEVICE_FRONTEND, > - * DVB_DEVICE_DEMUX, DVB_DEVICE_DVR, DVB_DEVICE_CA, DVB_DEVICE_NET > + * @type: type of the device, as defined by &enum dvb_device_type. > * @minor: devnode minor number. Major number is always DVB_MAJOR. > * @id: device ID number, inside the adapter > * @readers: Initialized by the caller. Each call to open() in Read Only mode > @@ -135,7 +156,7 @@ struct dvb_device { > struct list_head list_head; > const struct file_operations *fops; > struct dvb_adapter *adapter; > - int type; > + enum dvb_device_type type; > int minor; > u32 id; > > @@ -194,9 +215,7 @@ int dvb_unregister_adapter(struct dvb_adapter *adap); > * stored > * @template: Template used to create &pdvbdev; > * @priv: private data > - * @type: type of the device: %DVB_DEVICE_SEC, %DVB_DEVICE_FRONTEND, > - * %DVB_DEVICE_DEMUX, %DVB_DEVICE_DVR, %DVB_DEVICE_CA, > - * %DVB_DEVICE_NET > + * @type: type of the device, as defined by &enum dvb_device_type. > * @demux_sink_pads: Number of demux outputs, to be used to create the TS > * outputs via the Media Controller. > */ > @@ -204,7 +223,7 @@ int dvb_register_device(struct dvb_adapter *adap, > struct dvb_device **pdvbdev, > const struct dvb_device *template, > void *priv, > - int type, > + enum dvb_device_type type, > int demux_sink_pads); > > /** > -- > 2.13.5 >