Skip to contentSkip to conversation

How to add multiple example with conflicting includes

DISCUSSION Corentin Labbe 3 participants 3 messages Jul 26, 2019 – Aug 20, 2019

lore
Share & tools
lore
#0 lore raw

Hello

When I try to check the following examples of a devicetree schema:
examples:
- |

    #include <dt-bindings/interrupt-controller/arm-gic.h>                       
    #include <dt-bindings/clock/sun50i-a64-ccu.h>                               
    #include <dt-bindings/reset/sun50i-a64-ccu.h>                               
                                                                                
    crypto: crypto@1c15000 {                                                    
      compatible = "allwinner,sun8i-h3-crypto";                                 
      reg = <0x01c15000 0x1000>;                                                
      interrupts = <GIC_SPI 94 IRQ_TYPE_LEVEL_HIGH>;                            
      clocks = <&ccu CLK_BUS_CE>, <&ccu CLK_CE>;                                
      clock-names = "ahb", "mod";                                               
      resets = <&ccu RST_BUS_CE>;                                               
      reset-names = "ahb";                                                      
    };                                                                          
  - |                                                                           
    #include <dt-bindings/interrupt-controller/arm-gic.h>                       
    #include <dt-bindings/clock/sun50i-h6-ccu.h>                                
    #include <dt-bindings/reset/sun50i-h6-ccu.h>                                
    crypto: crypto@1904000 {                                                    
      compatible = "allwinner,sun50i-h6-crypto";                                
      reg = <0x01904000 0x1000>;                                                
      interrupts = <GIC_SPI 87 IRQ_TYPE_LEVEL_HIGH>;                            
      clocks = <&ccu CLK_BUS_CE>, <&ccu CLK_CE>, <&ccu CLK_MBUS_CE>;            
      clock-names = "ahb", "mod", "mbus";                                       
      resets = <&ccu RST_BUS_CE>;                                               
      reset-names = "ahb";                                                      
    };

I get:
In file included from Documentation/devicetree/bindings/crypto/allwinner,sun8i-ce.example.dts:42:
/linux-next/scripts/dtc/include-prefixes/dt-bindings/clock/sun50i-h6-ccu.h:9: warning: "CLK_PLL_PERIPH0" redefined
#define CLK_PLL_PERIPH0 3
[...]

So how can I add multiple examples which need somes conflicting #include to be validated.

Thanks
Regards

#1 lore raw

Hi Rob,

Quoted 32 lines · Corentin Labbe

When I try to check the following examples of a devicetree schema:
examples:
- |

    #include <dt-bindings/interrupt-controller/arm-gic.h>
    #include <dt-bindings/clock/sun50i-a64-ccu.h>
    #include <dt-bindings/reset/sun50i-a64-ccu.h>

    crypto: crypto@1c15000 {
      compatible = "allwinner,sun8i-h3-crypto";
      reg = <0x01c15000 0x1000>;
      interrupts = <GIC_SPI 94 IRQ_TYPE_LEVEL_HIGH>;
      clocks = <&ccu CLK_BUS_CE>, <&ccu CLK_CE>;
      clock-names = "ahb", "mod";
      resets = <&ccu RST_BUS_CE>;
      reset-names = "ahb";
    };
  - |
    #include <dt-bindings/interrupt-controller/arm-gic.h>
    #include <dt-bindings/clock/sun50i-h6-ccu.h>
    #include <dt-bindings/reset/sun50i-h6-ccu.h>
    crypto: crypto@1904000 {
      compatible = "allwinner,sun50i-h6-crypto";
      reg = <0x01904000 0x1000>;
      interrupts = <GIC_SPI 87 IRQ_TYPE_LEVEL_HIGH>;
      clocks = <&ccu CLK_BUS_CE>, <&ccu CLK_CE>, <&ccu CLK_MBUS_CE>;
      clock-names = "ahb", "mod", "mbus";
      resets = <&ccu RST_BUS_CE>;
      reset-names = "ahb";
    };
Quoted 8 lines

I get:
In file included from Documentation/devicetree/bindings/crypto/allwinner,sun8i-ce.example.dts:42:
/linux-next/scripts/dtc/include-prefixes/dt-bindings/clock/sun50i-h6-ccu.h:9: warning: "CLK_PLL_PERIPH0" redefined
#define CLK_PLL_PERIPH0 3
[...]

So how can I add multiple examples which need somes conflicting #include to be validated.

I'm having the same issue right now, is there a proper fix / workaround?

Thanks!
Maxime

--
Maxime Ripard, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com

#2 lore raw
In reply to Corentin Labbe
Quoted 35 lines · Corentin Labbe

Hello

When I try to check the following examples of a devicetree schema:
examples:
- |

    #include <dt-bindings/interrupt-controller/arm-gic.h>
    #include <dt-bindings/clock/sun50i-a64-ccu.h>
    #include <dt-bindings/reset/sun50i-a64-ccu.h>

    crypto: crypto@1c15000 {
      compatible = "allwinner,sun8i-h3-crypto";
      reg = <0x01c15000 0x1000>;
      interrupts = <GIC_SPI 94 IRQ_TYPE_LEVEL_HIGH>;
      clocks = <&ccu CLK_BUS_CE>, <&ccu CLK_CE>;
      clock-names = "ahb", "mod";
      resets = <&ccu RST_BUS_CE>;
      reset-names = "ahb";
    };
  - |
    #include <dt-bindings/interrupt-controller/arm-gic.h>
    #include <dt-bindings/clock/sun50i-h6-ccu.h>
    #include <dt-bindings/reset/sun50i-h6-ccu.h>
    crypto: crypto@1904000 {
      compatible = "allwinner,sun50i-h6-crypto";
      reg = <0x01904000 0x1000>;
      interrupts = <GIC_SPI 87 IRQ_TYPE_LEVEL_HIGH>;
      clocks = <&ccu CLK_BUS_CE>, <&ccu CLK_CE>, <&ccu CLK_MBUS_CE>;
      clock-names = "ahb", "mod", "mbus";
      resets = <&ccu RST_BUS_CE>;
      reset-names = "ahb";
    };
Quoted 7 lines

I get:
In file included from Documentation/devicetree/bindings/crypto/allwinner,sun8i-ce.example.dts:42:
/linux-next/scripts/dtc/include-prefixes/dt-bindings/clock/sun50i-h6-ccu.h:9: warning: "CLK_PLL_PERIPH0" redefined
#define CLK_PLL_PERIPH0 3
[...]

So how can I add multiple examples which need somes conflicting #include to be validated.

2 clocks versus 3 clocks hardly seems like a reason for a 2nd example and I would just drop it IMO.

You could rename your defines to not collide, but that's kind of painful.

The 3rd option is getting dt-extract-example to spit out N example files and then build each one separately. That was more complicated than I cared to figure out with kbuild, so I went the simple route.

Rob