2021-02-08 12:41:42

by Stephen Rothwell

[permalink] [raw]
Subject: linux-next: build warning after merge of the v4l-dvb tree

Hi all,

After merging the v4l-dvb tree, today's linux-next build (htmldocs)
produced this warning:

include/media/v4l2-async.h:178: warning: expecting prototype for v4l2_async_notifier_add_fwnode_subdev(). Prototype was for __v4l2_async_notifier_add_fwnode_subdev() instead
include/media/v4l2-async.h:207: warning: expecting prototype for v4l2_async_notifier_add_fwnode_remote_subdev(). Prototype was for __v4l2_async_notifier_add_fwnode_remote_subdev() instead
include/media/v4l2-async.h:230: warning: expecting prototype for v4l2_async_notifier_add_i2c_subdev(). Prototype was for __v4l2_async_notifier_add_i2c_subdev() instead

Maybe introduced by commit

c1cc23625062 ("media: v4l2-async: Discourage use of v4l2_async_notifier_add_subdev")

--
Cheers,
Stephen Rothwell


Attachments:
(No filename) (499.00 B)
OpenPGP digital signature

2021-02-08 18:45:52

by Ezequiel Garcia

[permalink] [raw]
Subject: Re: linux-next: build warning after merge of the v4l-dvb tree

Hi Stephen,

On Mon, 2021-02-08 at 23:37 +1100, Stephen Rothwell wrote:
> Hi all,
>
> After merging the v4l-dvb tree, today's linux-next build (htmldocs)
> produced this warning:
>
> include/media/v4l2-async.h:178: warning: expecting prototype for v4l2_async_notifier_add_fwnode_subdev(). Prototype was for
> __v4l2_async_notifier_add_fwnode_subdev() instead
> include/media/v4l2-async.h:207: warning: expecting prototype for v4l2_async_notifier_add_fwnode_remote_subdev(). Prototype was for
> __v4l2_async_notifier_add_fwnode_remote_subdev() instead
> include/media/v4l2-async.h:230: warning: expecting prototype for v4l2_async_notifier_add_i2c_subdev(). Prototype was for
> __v4l2_async_notifier_add_i2c_subdev() instead
>
> Maybe introduced by commit
>
>   c1cc23625062 ("media: v4l2-async: Discourage use of v4l2_async_notifier_add_subdev")
>

Thanks for spotting this. Should be fixed by:

diff --git a/include/media/v4l2-async.h b/include/media/v4l2-async.h
index 6f22daa6f067..3785445282fc 100644
--- a/include/media/v4l2-async.h
+++ b/include/media/v4l2-async.h
@@ -157,7 +157,7 @@ int __v4l2_async_notifier_add_subdev(struct v4l2_async_notifier *notifier,
struct v4l2_async_subdev *asd);

/**
- * v4l2_async_notifier_add_fwnode_subdev - Allocate and add a fwnode async
+ * __v4l2_async_notifier_add_fwnode_subdev - Allocate and add a fwnode async
* subdev to the notifier's master asd_list.
*
* @notifier: pointer to &struct v4l2_async_notifier
@@ -181,7 +181,7 @@ __v4l2_async_notifier_add_fwnode_subdev(struct v4l2_async_notifier *notifier,
sizeof(__type)))

/**
- * v4l2_async_notifier_add_fwnode_remote_subdev - Allocate and add a fwnode
+ * __v4l2_async_notifier_add_fwnode_remote_subdev - Allocate and add a fwnode
* remote async subdev to the
* notifier's master asd_list.
*
@@ -210,7 +210,7 @@ __v4l2_async_notifier_add_fwnode_remote_subdev(struct v4l2_async_notifier *notif
sizeof(__type)))

/**
- * v4l2_async_notifier_add_i2c_subdev - Allocate and add an i2c async
+ * __v4l2_async_notifier_add_i2c_subdev - Allocate and add an i2c async
* subdev to the notifier's master asd_list.
*
* @notifier: pointer to &struct v4l2_async_notifier
@@ -228,7 +228,7 @@ struct v4l2_async_subdev *
__v4l2_async_notifier_add_i2c_subdev(struct v4l2_async_notifier *notifier,
int adapter_id, unsigned short address,
unsigned int asd_struct_size);
-#define v4l2_async_notifier_add_i2c_subdev(__notifier, __adap, __addr, __type) \
+#define v4l2_async_notifier_i2c(__notifier, __adap, __addr, __type) \
((__type *)__v4l2_async_notifier_add_i2c_subdev(__notifier, __adap, __addr, \
sizeof(__type)))


I'll send a fix for Mauro.

Best regards,
Ezequiel

2021-02-08 18:49:02

by Sakari Ailus

[permalink] [raw]
Subject: Re: linux-next: build warning after merge of the v4l-dvb tree

Hi Ezequiel,

Thanks for addressing this.

On Mon, Feb 08, 2021 at 01:42:21PM -0300, Ezequiel Garcia wrote:
> Hi Stephen,
>
> On Mon, 2021-02-08 at 23:37 +1100, Stephen Rothwell wrote:
> > Hi all,
> >
> > After merging the v4l-dvb tree, today's linux-next build (htmldocs)
> > produced this warning:
> >
> > include/media/v4l2-async.h:178: warning: expecting prototype for v4l2_async_notifier_add_fwnode_subdev(). Prototype was for
> > __v4l2_async_notifier_add_fwnode_subdev() instead
> > include/media/v4l2-async.h:207: warning: expecting prototype for v4l2_async_notifier_add_fwnode_remote_subdev(). Prototype was for
> > __v4l2_async_notifier_add_fwnode_remote_subdev() instead
> > include/media/v4l2-async.h:230: warning: expecting prototype for v4l2_async_notifier_add_i2c_subdev(). Prototype was for
> > __v4l2_async_notifier_add_i2c_subdev() instead
> >
> > Maybe introduced by commit
> >
> > ? c1cc23625062 ("media: v4l2-async: Discourage use of v4l2_async_notifier_add_subdev")
> >
>
> Thanks for spotting this. Should be fixed by:
>
> diff --git a/include/media/v4l2-async.h b/include/media/v4l2-async.h
> index 6f22daa6f067..3785445282fc 100644
> --- a/include/media/v4l2-async.h
> +++ b/include/media/v4l2-async.h
> @@ -157,7 +157,7 @@ int __v4l2_async_notifier_add_subdev(struct v4l2_async_notifier *notifier,
> struct v4l2_async_subdev *asd);
>
> /**
> - * v4l2_async_notifier_add_fwnode_subdev - Allocate and add a fwnode async
> + * __v4l2_async_notifier_add_fwnode_subdev - Allocate and add a fwnode async

The problem with the approach is that this no longer documents the API that
drivers are intended to use, but the intermediate one. I guess fixing
this properly could require changes to kerneldoc so I have no objections to
the approach.

> * subdev to the notifier's master asd_list.
> *
> * @notifier: pointer to &struct v4l2_async_notifier
> @@ -181,7 +181,7 @@ __v4l2_async_notifier_add_fwnode_subdev(struct v4l2_async_notifier *notifier,
> sizeof(__type)))
>
> /**
> - * v4l2_async_notifier_add_fwnode_remote_subdev - Allocate and add a fwnode
> + * __v4l2_async_notifier_add_fwnode_remote_subdev - Allocate and add a fwnode
> * remote async subdev to the
> * notifier's master asd_list.
> *
> @@ -210,7 +210,7 @@ __v4l2_async_notifier_add_fwnode_remote_subdev(struct v4l2_async_notifier *notif
> sizeof(__type)))
>
> /**
> - * v4l2_async_notifier_add_i2c_subdev - Allocate and add an i2c async
> + * __v4l2_async_notifier_add_i2c_subdev - Allocate and add an i2c async
> * subdev to the notifier's master asd_list.
> *
> * @notifier: pointer to &struct v4l2_async_notifier
> @@ -228,7 +228,7 @@ struct v4l2_async_subdev *
> __v4l2_async_notifier_add_i2c_subdev(struct v4l2_async_notifier *notifier,
> int adapter_id, unsigned short address,
> unsigned int asd_struct_size);
> -#define v4l2_async_notifier_add_i2c_subdev(__notifier, __adap, __addr, __type) \
> +#define v4l2_async_notifier_i2c(__notifier, __adap, __addr, __type) \

I guess this change was not intentional?

> ((__type *)__v4l2_async_notifier_add_i2c_subdev(__notifier, __adap, __addr, \
> sizeof(__type)))
>
>

--
Kind regards,

Sakari Ailus

2021-02-08 18:53:08

by Ezequiel Garcia

[permalink] [raw]
Subject: Re: linux-next: build warning after merge of the v4l-dvb tree

On Mon, 2021-02-08 at 18:46 +0200, Sakari Ailus wrote:
> Hi Ezequiel,
>
> Thanks for addressing this.
>
> On Mon, Feb 08, 2021 at 01:42:21PM -0300, Ezequiel Garcia wrote:
> > Hi Stephen,
> >
> > On Mon, 2021-02-08 at 23:37 +1100, Stephen Rothwell wrote:
> > > Hi all,
> > >
> > > After merging the v4l-dvb tree, today's linux-next build (htmldocs)
> > > produced this warning:
> > >
> > > include/media/v4l2-async.h:178: warning: expecting prototype for v4l2_async_notifier_add_fwnode_subdev(). Prototype was for
> > > __v4l2_async_notifier_add_fwnode_subdev() instead
> > > include/media/v4l2-async.h:207: warning: expecting prototype for v4l2_async_notifier_add_fwnode_remote_subdev(). Prototype was for
> > > __v4l2_async_notifier_add_fwnode_remote_subdev() instead
> > > include/media/v4l2-async.h:230: warning: expecting prototype for v4l2_async_notifier_add_i2c_subdev(). Prototype was for
> > > __v4l2_async_notifier_add_i2c_subdev() instead
> > >
> > > Maybe introduced by commit
> > >
> > >   c1cc23625062 ("media: v4l2-async: Discourage use of v4l2_async_notifier_add_subdev")
> > >
> >
> > Thanks for spotting this. Should be fixed by:
> >
> > diff --git a/include/media/v4l2-async.h b/include/media/v4l2-async.h
> > index 6f22daa6f067..3785445282fc 100644
> > --- a/include/media/v4l2-async.h
> > +++ b/include/media/v4l2-async.h
> > @@ -157,7 +157,7 @@ int __v4l2_async_notifier_add_subdev(struct v4l2_async_notifier *notifier,
> >                                    struct v4l2_async_subdev *asd);
> >  
> >  /**
> > - * v4l2_async_notifier_add_fwnode_subdev - Allocate and add a fwnode async
> > + * __v4l2_async_notifier_add_fwnode_subdev - Allocate and add a fwnode async
>
> The problem with the approach is that this no longer documents the API that
> drivers are intended to use, but the intermediate one. I guess fixing
> this properly could require changes to kerneldoc so I have no objections to
> the approach.
>

Right, but do we have any other solution here?

> >   *                             subdev to the notifier's master asd_list.
> >   *
> >   * @notifier: pointer to &struct v4l2_async_notifier
> > @@ -181,7 +181,7 @@ __v4l2_async_notifier_add_fwnode_subdev(struct v4l2_async_notifier *notifier,
> >                                                    sizeof(__type)))
> >  
> >  /**
> > - * v4l2_async_notifier_add_fwnode_remote_subdev - Allocate and add a fwnode
> > + * __v4l2_async_notifier_add_fwnode_remote_subdev - Allocate and add a fwnode
> >   *                                               remote async subdev to the
> >   *                                               notifier's master asd_list.
> >   *
> > @@ -210,7 +210,7 @@ __v4l2_async_notifier_add_fwnode_remote_subdev(struct v4l2_async_notifier *notif
> >                                                           sizeof(__type)))
> >  
> >  /**
> > - * v4l2_async_notifier_add_i2c_subdev - Allocate and add an i2c async
> > + * __v4l2_async_notifier_add_i2c_subdev - Allocate and add an i2c async
> >   *                             subdev to the notifier's master asd_list.
> >   *
> >   * @notifier: pointer to &struct v4l2_async_notifier
> > @@ -228,7 +228,7 @@ struct v4l2_async_subdev *
> >  __v4l2_async_notifier_add_i2c_subdev(struct v4l2_async_notifier *notifier,
> >                                      int adapter_id, unsigned short address,
> >                                      unsigned int asd_struct_size);
> > -#define v4l2_async_notifier_add_i2c_subdev(__notifier, __adap, __addr, __type) \
> > +#define v4l2_async_notifier_i2c(__notifier, __adap, __addr, __type)    \
>
> I guess this change was not intentional?
>

Indeed :)

Thanks,
Ezequiel

2021-02-08 19:06:17

by Mauro Carvalho Chehab

[permalink] [raw]
Subject: Re: linux-next: build warning after merge of the v4l-dvb tree

Em Mon, 08 Feb 2021 13:57:56 -0300
Ezequiel Garcia <[email protected]> escreveu:

> On Mon, 2021-02-08 at 18:46 +0200, Sakari Ailus wrote:
> > Hi Ezequiel,
> >
> > Thanks for addressing this.
> >
> > On Mon, Feb 08, 2021 at 01:42:21PM -0300, Ezequiel Garcia wrote:
> > > Hi Stephen,
> > >
> > > On Mon, 2021-02-08 at 23:37 +1100, Stephen Rothwell wrote:
> > > > Hi all,
> > > >
> > > > After merging the v4l-dvb tree, today's linux-next build (htmldocs)
> > > > produced this warning:
> > > >
> > > > include/media/v4l2-async.h:178: warning: expecting prototype for v4l2_async_notifier_add_fwnode_subdev(). Prototype was for
> > > > __v4l2_async_notifier_add_fwnode_subdev() instead
> > > > include/media/v4l2-async.h:207: warning: expecting prototype for v4l2_async_notifier_add_fwnode_remote_subdev(). Prototype was for
> > > > __v4l2_async_notifier_add_fwnode_remote_subdev() instead
> > > > include/media/v4l2-async.h:230: warning: expecting prototype for v4l2_async_notifier_add_i2c_subdev(). Prototype was for
> > > > __v4l2_async_notifier_add_i2c_subdev() instead
> > > >
> > > > Maybe introduced by commit
> > > >
> > > >   c1cc23625062 ("media: v4l2-async: Discourage use of v4l2_async_notifier_add_subdev")
> > > >
> > >
> > > Thanks for spotting this. Should be fixed by:
> > >
> > > diff --git a/include/media/v4l2-async.h b/include/media/v4l2-async.h
> > > index 6f22daa6f067..3785445282fc 100644
> > > --- a/include/media/v4l2-async.h
> > > +++ b/include/media/v4l2-async.h
> > > @@ -157,7 +157,7 @@ int __v4l2_async_notifier_add_subdev(struct v4l2_async_notifier *notifier,
> > >                                    struct v4l2_async_subdev *asd);
> > >  
> > >  /**
> > > - * v4l2_async_notifier_add_fwnode_subdev - Allocate and add a fwnode async
> > > + * __v4l2_async_notifier_add_fwnode_subdev - Allocate and add a fwnode async
> >
> > The problem with the approach is that this no longer documents the API that
> > drivers are intended to use, but the intermediate one.

Yep. the better would be to keep documenting what will be used.

> > I guess fixing
> > this properly could require changes to kerneldoc so I have no objections to
> > the approach.

It is not a simple kernel-doc change.

The problem is that Kernel-doc expects:


/**
* foo - something
*/
void foo(...)

As it parses the file lines sequentially, using the parameters at
foo(...) to double-check if everything is ok.

In order for it to parse things like:

/**
* foo - something
*/

... (some other functions in the middle)

void foo(...)

Would require kernel-doc to first parse all the file, storing markups
on a separate struct, and then, on a second step, produce an output.

Even if modified to do that, there's a question if the result would
be what it is expected.

A separate thing would be to do things like:


/**
* foo - something
*/
void __foo(...)

The problem here is that usually the arguments for __foo() are
different than the ones for foo(). See for example the macros that
have a __foo() functions with an owner argument, that are solved
on a macro called foo().

Thanks,
Mauro

2021-02-08 20:19:47

by Ezequiel Garcia

[permalink] [raw]
Subject: Re: linux-next: build warning after merge of the v4l-dvb tree

On Mon, 2021-02-08 at 18:40 +0100, Mauro Carvalho Chehab wrote:
> Em Mon, 08 Feb 2021 13:57:56 -0300
> Ezequiel Garcia <[email protected]> escreveu:
>
> > On Mon, 2021-02-08 at 18:46 +0200, Sakari Ailus wrote:
> > > Hi Ezequiel,
> > >
> > > Thanks for addressing this.
> > >
> > > On Mon, Feb 08, 2021 at 01:42:21PM -0300, Ezequiel Garcia wrote: 
> > > > Hi Stephen,
> > > >
> > > > On Mon, 2021-02-08 at 23:37 +1100, Stephen Rothwell wrote: 
> > > > > Hi all,
> > > > >
> > > > > After merging the v4l-dvb tree, today's linux-next build (htmldocs)
> > > > > produced this warning:
> > > > >
> > > > > include/media/v4l2-async.h:178: warning: expecting prototype for v4l2_async_notifier_add_fwnode_subdev(). Prototype was for
> > > > > __v4l2_async_notifier_add_fwnode_subdev() instead
> > > > > include/media/v4l2-async.h:207: warning: expecting prototype for v4l2_async_notifier_add_fwnode_remote_subdev(). Prototype was for
> > > > > __v4l2_async_notifier_add_fwnode_remote_subdev() instead
> > > > > include/media/v4l2-async.h:230: warning: expecting prototype for v4l2_async_notifier_add_i2c_subdev(). Prototype was for
> > > > > __v4l2_async_notifier_add_i2c_subdev() instead
> > > > >
> > > > > Maybe introduced by commit
> > > > >
> > > > >   c1cc23625062 ("media: v4l2-async: Discourage use of v4l2_async_notifier_add_subdev")
> > > > >  
> > > >
> > > > Thanks for spotting this. Should be fixed by:
> > > >
> > > > diff --git a/include/media/v4l2-async.h b/include/media/v4l2-async.h
> > > > index 6f22daa6f067..3785445282fc 100644
> > > > --- a/include/media/v4l2-async.h
> > > > +++ b/include/media/v4l2-async.h
> > > > @@ -157,7 +157,7 @@ int __v4l2_async_notifier_add_subdev(struct v4l2_async_notifier *notifier,
> > > >                                    struct v4l2_async_subdev *asd);
> > > >  
> > > >  /**
> > > > - * v4l2_async_notifier_add_fwnode_subdev - Allocate and add a fwnode async
> > > > + * __v4l2_async_notifier_add_fwnode_subdev - Allocate and add a fwnode async 
> > >
> > > The problem with the approach is that this no longer documents the API that
> > > drivers are intended to use, but the intermediate one.
>
> Yep. the better would be to keep documenting what will be used.
>

Is there a way to silence/ignore the warning for a specific function(s)?

Ezequiel

2021-02-15 00:17:32

by Stephen Rothwell

[permalink] [raw]
Subject: Re: linux-next: build warning after merge of the v4l-dvb tree

Hi all,

On Mon, 8 Feb 2021 23:37:16 +1100 Stephen Rothwell <[email protected]> wrote:
>
> After merging the v4l-dvb tree, today's linux-next build (htmldocs)
> produced this warning:
>
> include/media/v4l2-async.h:178: warning: expecting prototype for v4l2_async_notifier_add_fwnode_subdev(). Prototype was for __v4l2_async_notifier_add_fwnode_subdev() instead
> include/media/v4l2-async.h:207: warning: expecting prototype for v4l2_async_notifier_add_fwnode_remote_subdev(). Prototype was for __v4l2_async_notifier_add_fwnode_remote_subdev() instead
> include/media/v4l2-async.h:230: warning: expecting prototype for v4l2_async_notifier_add_i2c_subdev(). Prototype was for __v4l2_async_notifier_add_i2c_subdev() instead
>
> Maybe introduced by commit
>
> c1cc23625062 ("media: v4l2-async: Discourage use of v4l2_async_notifier_add_subdev")

With the merge window about to open, this is a reminder that these
warnings still exist.

--
Cheers,
Stephen Rothwell


Attachments:
(No filename) (499.00 B)
OpenPGP digital signature

2021-02-15 10:22:21

by Mauro Carvalho Chehab

[permalink] [raw]
Subject: Re: linux-next: build warning after merge of the v4l-dvb tree

Em Mon, 08 Feb 2021 15:53:00 -0300
Ezequiel Garcia <[email protected]> escreveu:

> On Mon, 2021-02-08 at 18:40 +0100, Mauro Carvalho Chehab wrote:
> > Em Mon, 08 Feb 2021 13:57:56 -0300
> > Ezequiel Garcia <[email protected]> escreveu:
> >
> > > On Mon, 2021-02-08 at 18:46 +0200, Sakari Ailus wrote:
> > > > Hi Ezequiel,
> > > >
> > > > Thanks for addressing this.
> > > >
> > > > On Mon, Feb 08, 2021 at 01:42:21PM -0300, Ezequiel Garcia wrote: 
> > > > > Hi Stephen,
> > > > >
> > > > > On Mon, 2021-02-08 at 23:37 +1100, Stephen Rothwell wrote: 
> > > > > > Hi all,
> > > > > >
> > > > > > After merging the v4l-dvb tree, today's linux-next build (htmldocs)
> > > > > > produced this warning:
> > > > > >
> > > > > > include/media/v4l2-async.h:178: warning: expecting prototype for v4l2_async_notifier_add_fwnode_subdev(). Prototype was for
> > > > > > __v4l2_async_notifier_add_fwnode_subdev() instead
> > > > > > include/media/v4l2-async.h:207: warning: expecting prototype for v4l2_async_notifier_add_fwnode_remote_subdev(). Prototype was for
> > > > > > __v4l2_async_notifier_add_fwnode_remote_subdev() instead
> > > > > > include/media/v4l2-async.h:230: warning: expecting prototype for v4l2_async_notifier_add_i2c_subdev(). Prototype was for
> > > > > > __v4l2_async_notifier_add_i2c_subdev() instead
> > > > > >
> > > > > > Maybe introduced by commit
> > > > > >
> > > > > >   c1cc23625062 ("media: v4l2-async: Discourage use of v4l2_async_notifier_add_subdev")
> > > > > >  
> > > > >
> > > > > Thanks for spotting this. Should be fixed by:
> > > > >
> > > > > diff --git a/include/media/v4l2-async.h b/include/media/v4l2-async.h
> > > > > index 6f22daa6f067..3785445282fc 100644
> > > > > --- a/include/media/v4l2-async.h
> > > > > +++ b/include/media/v4l2-async.h
> > > > > @@ -157,7 +157,7 @@ int __v4l2_async_notifier_add_subdev(struct v4l2_async_notifier *notifier,
> > > > >                                    struct v4l2_async_subdev *asd);
> > > > >  
> > > > >  /**
> > > > > - * v4l2_async_notifier_add_fwnode_subdev - Allocate and add a fwnode async
> > > > > + * __v4l2_async_notifier_add_fwnode_subdev - Allocate and add a fwnode async 
> > > >
> > > > The problem with the approach is that this no longer documents the API that
> > > > drivers are intended to use, but the intermediate one.
> >
> > Yep. the better would be to keep documenting what will be used.
> >
>
> Is there a way to silence/ignore the warning for a specific function(s)?

No. The warning is there for a very good reason: if you do something like:


/**
* delete - delete some file
*
* This function deletes something.
*/
void insert() {}
/**
* insert - creates a new file
*
* This function creates a file and inserts something.
*/
void delete() {}

the output of it will be:

$ ./scripts/kernel-doc -sphinx-version 3.0.0 silly.c
.. c:function:: void insert ()

delete some file

**Parameters**

**Description**


This function deletes something.


.. c:function:: void delete ()

creates a new file

**Parameters**

**Description**


This function creates a file and inserts something.

Which is completely wrong. If someone tries to write a code using the
above, the result will be just the opposite than what it was documented.

Btw, I noticed several places where things like that happened, because
some code were added between a Kernel-doc markup and some function.

Thanks,
Mauro

2021-02-15 10:53:36

by Mauro Carvalho Chehab

[permalink] [raw]
Subject: Re: linux-next: build warning after merge of the v4l-dvb tree

Em Mon, 15 Feb 2021 11:20:24 +0100
Mauro Carvalho Chehab <[email protected]> escreveu:

> Em Mon, 08 Feb 2021 15:53:00 -0300
> Ezequiel Garcia <[email protected]> escreveu:
>
> > On Mon, 2021-02-08 at 18:40 +0100, Mauro Carvalho Chehab wrote:
> > > Em Mon, 08 Feb 2021 13:57:56 -0300
> > > Ezequiel Garcia <[email protected]> escreveu:
> > >
> > > > On Mon, 2021-02-08 at 18:46 +0200, Sakari Ailus wrote:
> > > > > Hi Ezequiel,
> > > > >
> > > > > Thanks for addressing this.
> > > > >
> > > > > On Mon, Feb 08, 2021 at 01:42:21PM -0300, Ezequiel Garcia wrote: 
> > > > > > Hi Stephen,
> > > > > >
> > > > > > On Mon, 2021-02-08 at 23:37 +1100, Stephen Rothwell wrote: 
> > > > > > > Hi all,
> > > > > > >
> > > > > > > After merging the v4l-dvb tree, today's linux-next build (htmldocs)
> > > > > > > produced this warning:
> > > > > > >
> > > > > > > include/media/v4l2-async.h:178: warning: expecting prototype for v4l2_async_notifier_add_fwnode_subdev(). Prototype was for
> > > > > > > __v4l2_async_notifier_add_fwnode_subdev() instead
> > > > > > > include/media/v4l2-async.h:207: warning: expecting prototype for v4l2_async_notifier_add_fwnode_remote_subdev(). Prototype was for
> > > > > > > __v4l2_async_notifier_add_fwnode_remote_subdev() instead
> > > > > > > include/media/v4l2-async.h:230: warning: expecting prototype for v4l2_async_notifier_add_i2c_subdev(). Prototype was for
> > > > > > > __v4l2_async_notifier_add_i2c_subdev() instead
> > > > > > >
> > > > > > > Maybe introduced by commit
> > > > > > >
> > > > > > >   c1cc23625062 ("media: v4l2-async: Discourage use of v4l2_async_notifier_add_subdev")
> > > > > > >  
> > > > > >
> > > > > > Thanks for spotting this. Should be fixed by:
> > > > > >
> > > > > > diff --git a/include/media/v4l2-async.h b/include/media/v4l2-async.h
> > > > > > index 6f22daa6f067..3785445282fc 100644
> > > > > > --- a/include/media/v4l2-async.h
> > > > > > +++ b/include/media/v4l2-async.h
> > > > > > @@ -157,7 +157,7 @@ int __v4l2_async_notifier_add_subdev(struct v4l2_async_notifier *notifier,
> > > > > >                                    struct v4l2_async_subdev *asd);
> > > > > >  
> > > > > >  /**
> > > > > > - * v4l2_async_notifier_add_fwnode_subdev - Allocate and add a fwnode async
> > > > > > + * __v4l2_async_notifier_add_fwnode_subdev - Allocate and add a fwnode async 
> > > > >
> > > > > The problem with the approach is that this no longer documents the API that
> > > > > drivers are intended to use, but the intermediate one.
> > >
> > > Yep. the better would be to keep documenting what will be used.
> > >
> >
> > Is there a way to silence/ignore the warning for a specific function(s)?
>
> No. The warning is there for a very good reason: if you do something like:
>
>
> /**
> * delete - delete some file
> *
> * This function deletes something.
> */
> void insert() {}
> /**
> * insert - creates a new file
> *
> * This function creates a file and inserts something.
> */
> void delete() {}
>
> the output of it will be:
>
> $ ./scripts/kernel-doc -sphinx-version 3.0.0 silly.c
> .. c:function:: void insert ()
>
> delete some file
>
> **Parameters**
>
> **Description**
>
>
> This function deletes something.
>
>
> .. c:function:: void delete ()
>
> creates a new file
>
> **Parameters**
>
> **Description**
>
>
> This function creates a file and inserts something.
>
> Which is completely wrong. If someone tries to write a code using the
> above, the result will be just the opposite than what it was documented.
>
> Btw, I noticed several places where things like that happened, because
> some code were added between a Kernel-doc markup and some function.

Btw, in the specific case of this change, something like the above
quick hack would fix it.

PS: I didn't think much when I wrote the __type description.

Also, keeping the symbols that should be documented as __foo
doesn't seem the right thing to me :-)


---

[PATCH] v4l2-async.h: Fix kerneldoc markups

Document the functions that should be used by the kAPI clients,
instead of the internal functions.

Reported-by: Stephen Rothwell <[email protected]>
Signed-off-by: Mauro Carvalho Chehab <[email protected]>

diff --git a/include/media/v4l2-async.h b/include/media/v4l2-async.h
index 6f22daa6f067..91dbeaa4e6ee 100644
--- a/include/media/v4l2-async.h
+++ b/include/media/v4l2-async.h
@@ -156,42 +156,38 @@ void v4l2_async_notifier_init(struct v4l2_async_notifier *notifier);
int __v4l2_async_notifier_add_subdev(struct v4l2_async_notifier *notifier,
struct v4l2_async_subdev *asd);

+struct v4l2_async_subdev *
+__v4l2_async_notifier_add_fwnode_subdev(struct v4l2_async_notifier *notifier,
+ struct fwnode_handle *fwnode,
+ unsigned int asd_struct_size);
/**
* v4l2_async_notifier_add_fwnode_subdev - Allocate and add a fwnode async
* subdev to the notifier's master asd_list.
*
- * @notifier: pointer to &struct v4l2_async_notifier
- * @fwnode: fwnode handle of the sub-device to be matched
- * @asd_struct_size: size of the driver's async sub-device struct, including
- * sizeof(struct v4l2_async_subdev). The &struct
- * v4l2_async_subdev shall be the first member of
- * the driver's async sub-device struct, i.e. both
- * begin at the same memory address.
+ * @__notifier: pointer to &struct v4l2_async_notifier
+ * @__fwnode: fwnode handle of the sub-device to be matched
+ * @__type: type of the struct that contains a struct v4l2_async_subdev.
*
* Allocate a fwnode-matched asd of size asd_struct_size, and add it to the
* notifiers @asd_list. The function also gets a reference of the fwnode which
* is released later at notifier cleanup time.
*/
-struct v4l2_async_subdev *
-__v4l2_async_notifier_add_fwnode_subdev(struct v4l2_async_notifier *notifier,
- struct fwnode_handle *fwnode,
- unsigned int asd_struct_size);
#define v4l2_async_notifier_add_fwnode_subdev(__notifier, __fwnode, __type) \
((__type *)__v4l2_async_notifier_add_fwnode_subdev(__notifier, __fwnode, \
sizeof(__type)))

+struct v4l2_async_subdev *
+__v4l2_async_notifier_add_fwnode_remote_subdev(struct v4l2_async_notifier *notif,
+ struct fwnode_handle *endpoint,
+ unsigned int asd_struct_size);
/**
* v4l2_async_notifier_add_fwnode_remote_subdev - Allocate and add a fwnode
* remote async subdev to the
* notifier's master asd_list.
*
- * @notif: pointer to &struct v4l2_async_notifier
- * @endpoint: local endpoint pointing to the remote sub-device to be matched
- * @asd_struct_size: size of the driver's async sub-device struct, including
- * sizeof(struct v4l2_async_subdev). The &struct
- * v4l2_async_subdev shall be the first member of
- * the driver's async sub-device struct, i.e. both
- * begin at the same memory address.
+ * @__notifier: pointer to &struct v4l2_async_notifier
+ * @__ep: local endpoint pointing to the remote sub-device to be matched
+ * @__type: type of the struct that contains a struct v4l2_async_subdev.
*
* Gets the remote endpoint of a given local endpoint, set it up for fwnode
* matching and adds the async sub-device to the notifier's @asd_list. The
@@ -201,33 +197,25 @@ __v4l2_async_notifier_add_fwnode_subdev(struct v4l2_async_notifier *notifier,
* This is just like @v4l2_async_notifier_add_fwnode_subdev, but with the
* exception that the fwnode refers to a local endpoint, not the remote one.
*/
-struct v4l2_async_subdev *
-__v4l2_async_notifier_add_fwnode_remote_subdev(struct v4l2_async_notifier *notif,
- struct fwnode_handle *endpoint,
- unsigned int asd_struct_size);
#define v4l2_async_notifier_add_fwnode_remote_subdev(__notifier, __ep, __type) \
((__type *)__v4l2_async_notifier_add_fwnode_remote_subdev(__notifier, __ep, \
sizeof(__type)))

+struct v4l2_async_subdev *
+__v4l2_async_notifier_add_i2c_subdev(struct v4l2_async_notifier *notifier,
+ int adapter_id, unsigned short address,
+ unsigned int asd_struct_size);
/**
* v4l2_async_notifier_add_i2c_subdev - Allocate and add an i2c async
* subdev to the notifier's master asd_list.
*
- * @notifier: pointer to &struct v4l2_async_notifier
- * @adapter_id: I2C adapter ID to be matched
- * @address: I2C address of sub-device to be matched
- * @asd_struct_size: size of the driver's async sub-device struct, including
- * sizeof(struct v4l2_async_subdev). The &struct
- * v4l2_async_subdev shall be the first member of
- * the driver's async sub-device struct, i.e. both
- * begin at the same memory address.
+ * @__notifier: pointer to &struct v4l2_async_notifier
+ * @__adap: I2C adapter ID to be matched
+ * @__addr: I2C address of sub-device to be matched
+ * @__type: type of the struct that contains a struct v4l2_async_subdev.
*
* Same as above but for I2C matched sub-devices.
*/
-struct v4l2_async_subdev *
-__v4l2_async_notifier_add_i2c_subdev(struct v4l2_async_notifier *notifier,
- int adapter_id, unsigned short address,
- unsigned int asd_struct_size);
#define v4l2_async_notifier_add_i2c_subdev(__notifier, __adap, __addr, __type) \
((__type *)__v4l2_async_notifier_add_i2c_subdev(__notifier, __adap, __addr, \
sizeof(__type)))


Thanks,
Mauro