Thread (12 messages) 12 messages, 4 authors, 2021-05-19

Re: [PATCH] net: phy: add driver for Motorcomm yt8511 phy

From: Leon Romanovsky <leon@kernel.org>
Date: 2021-05-19 12:56:27
Also in: linux-rockchip, lkml

On Wed, May 19, 2021 at 08:45:21AM -0400, Peter Geis wrote:
On Wed, May 19, 2021 at 7:50 AM Leon Romanovsky [off-list ref] wrote:
quoted
On Wed, May 19, 2021 at 12:37:43PM +0200, Heiner Kallweit wrote:
quoted
On 19.05.2021 10:18, Leon Romanovsky wrote:
quoted
On Tue, May 18, 2021 at 08:20:03PM -0400, Peter Geis wrote:
quoted
On Tue, May 18, 2021 at 4:59 AM Leon Romanovsky [off-list ref] wrote:
quoted
On Tue, May 11, 2021 at 05:46:06PM -0400, Peter Geis wrote:
quoted
Add a driver for the Motorcomm yt8511 phy that will be used in the
production Pine64 rk3566-quartz64 development board.
It supports gigabit transfer speeds, rgmii, and 125mhz clk output.

Signed-off-by: Peter Geis <redacted>
---
 MAINTAINERS                 |  6 +++
 drivers/net/phy/Kconfig     |  6 +++
 drivers/net/phy/Makefile    |  1 +
 drivers/net/phy/motorcomm.c | 85 +++++++++++++++++++++++++++++++++++++
 4 files changed, 98 insertions(+)
 create mode 100644 drivers/net/phy/motorcomm.c
<...>
quoted
+static const struct mdio_device_id __maybe_unused motorcomm_tbl[] = {
+     { PHY_ID_MATCH_EXACT(PHY_ID_YT8511) },
+     { /* sentinal */ }
+}
Why is this "__maybe_unused"? This *.c file doesn't have any compilation option
to compile part of it.

The "__maybe_unused" is not needed in this case.
I was simply following convention, for example the realtek.c,
micrel.c, and smsc.c drivers all have this as well.
Maybe they have a reason, but this specific driver doesn't have such.
It's used like this:
MODULE_DEVICE_TABLE(mdio, <mdio_device_id_tbl>);

And MODULE_DEVICE_TABLE is a no-op if MODULE isn't defined:

#ifdef MODULE
/* Creates an alias so file2alias.c can find device table. */
#define MODULE_DEVICE_TABLE(type, name)                                       \
extern typeof(name) __mod_##type##__##name##_device_table             \
  __attribute__ ((unused, alias(__stringify(name))))
#else  /* !MODULE */
#define MODULE_DEVICE_TABLE(type, name)
#endif

In this case the table is unused.
Do you see compilation warning for such scenario?
The issue you are describing has been fixed since 2010:

commit cf93c94581bab447a5634c6d737c1cf38c080261
Author: Uwe Kleine-König [off-list ref]
Date:   Sun Oct 3 23:43:32 2010 +0000

    net/phy: fix many "defined but unused" warnings

    MODULE_DEVICE_TABLE only expands to something if it's compiled
    for a module.  So when building-in support for the phys, the
    mdio_device_id tables are unused.  Marking them with __maybe_unused
    fixes the following warnings:

There is a strong push to fix all warnings during build, including W=1 warnings.
For fun I rebuilt without module support and confirmed that removing
this does trigger a W=1 warning.
I'm sorry that I continue to ask, but is net/phy/* usable without MODULE?
If not, the better fix is to require it in Kconfig instead of fixing all drivers.

Thanks for your answers.
quoted
Thanks
quoted
quoted
Thanks
quoted
quoted
Thanks
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help