On Sat, 6 Jul 2013, Heiko Stübner wrote: > + if (of_device_is_compatible(np, "rockchip,rk3188-dw-apb-timer-osc")) > + *quirks |= APBTMR_QUIRK_64BIT_COUNTER | APBTMR_QUIRK_NO_EOI | > + APBTMR_QUIRK_INVERSE_INTMASK | > + APBTMR_QUIRK_INVERSE_PERIODIC;
Brilliant. Next time we add > + if (of_device_is_compatible(np, "rockchip,rk3188-dw-apb-timer-osc2")) > + *quirks |= APBTMR_QUIRK_64BIT_COUNTER | APBTMR_QUIRK_NO_EOI | > + APBTMR_QUIRK_INVERSE_INTMASK | > + APBTMR_QUIRK_INVERSE_PERIODIC | MORE_NONSENSE; Plus the extra conditionals all over the place and a week later > + if (of_device_is_compatible(np, "rockchip,rk3188-dw-apb-timer-osc3")) > + *quirks |= ALLNONSENSE; This has nothing to do with QUIRKS at all. QUIRKS are our last resort when we cannot deal with the problem in a sane way. In this case this is simply the wrong aproach. We can deal with it in a sane way as I pointed out before and handle it as simple properties of the IP block. We have all mechanisms in place to handle such properties, device tree, platform data, static init structures. It's all there and we really do not need to plaster the code with random QUIRK conditionals. Did you ever consider the runtime penalty of this? Probably not, otherwise you would have spent time on speeding up that code by caching frequently accessed registers instead of reading them back over and over for no reason. Thanks, tglx
_______________________________________________ devicetree-discuss mailing list devicetree-discuss@lists.ozlabs.org https://lists.ozlabs.org/listinfo/devicetree-discuss