Hi Mason, On Thu, Jan 24, 2019 at 3:07 AM <masonccyang@xxxxxxxxxxx> wrote: > > "Sergei Shtylyov" <sergei.shtylyov@xxxxxxxxxxxxxxxxxx> > > 2019/01/24 上午 02:04 > > > +static const struct of_device_id rpc_spi_of_ids[] = { > > > + { .compatible = "renesas,r8a77995-rpc", }, > > > > Why (if it has no differences with the generic gen3 value below)? > > Please remove. > > By Geert's comments in dts, > > rpc: rpc@ee200000 { > compatible = "renesas,r8a7795-rpc", "renesas,rcar-gen3-rpc"; > reg = <0 0xee200000 0 0x200>, <0 0x08000000 0 0x4000000>, > <0 0xee208000 0 0x100>; > > I modified it to "renesas,r8a77995-rpc" because this is Soc I developed and validated. There's a difference between compatible values in DT and in drivers: - DT should list all compatible values that are applicable, from most-specific to least-specific, - Drivers should match against the least-specific compatible value that is sufficient to get the job done. In this case, that's "renesas,rcar-gen3-rpc". The driver will probably have to be extended to match against "renesas,r8a77970-rpc" when R-Car V3M support is added, as RPC on V3M has an extra register that must be set, and thus cannot be declared compatible with "renesas,rcar-gen3-rpc". I hope this explanation makes it clearer. Gr{oetje,eeting}s, Geert -- Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@xxxxxxxxxxxxxx In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that. -- Linus Torvalds