On Sun, Aug 30, 2020 at 6:25 PM Andrew Lunn <andrew@xxxxxxx> wrote: > > On Fri, Aug 28, 2020 at 05:09:52PM -0600, Rob Herring wrote: > > On Fri, Aug 28, 2020 at 7:00 AM Andrew Lunn <andrew@xxxxxxx> wrote: > > > > > > On Fri, Aug 28, 2020 at 04:19:39AM +0200, Andrew Lunn wrote: > > > > When building without CONFIG_OF and W=1, errors are given about unused > > > > arrays of match data, because of_match_node is stubbed as a macro. The > > > > compile does not see it takes parameters when not astub, so it > > > > generates warnings about unused variables. Replace the stub with an > > > > inline function to avoid these false warnings. > > > > > > Hi Rob > > > > > > So 0-day shows some people have worked around this with #ifdef > > > CONFIG_OF around the match table. > > > > > > I checked the object code for the file i'm interested in. The > > > optimiser has correctly throw away the match table and all code around > > > it with the inline stub. > > > > > > Which do you prefer? This patch and i remove the #ifdef, or the old > > > stub and if add #ifdef around the driver i'm getting warnings from? > > > > Use of_device_get_match_data instead of of_match_node. > > > > Hi Rob > > That does not work in the use case i'm interested in, which is giving > a W=1 warning. Take a look at the last example in > Documentation/devicetree/bindings/net/dsa/marvell.txt > > We have an Ethernet switch, using the compatible string > "marvell,mv88e6390". Embedded within the hardware, and within the same > driver, we have two MDIO busses. One is internal, for the PHYs > integrated into the switch, and one is external, of discrete PHY > connected to the switch. The external MDIO bus has its own compatible > string. However, there is no struct driver for it, the switch driver > is driving the MDIO bus. So of_device_get_match_data() will use the > wrong match table. Looks like in that code you may use of_device_is_compatible(). -- With Best Regards, Andy Shevchenko