• Serge Semin's avatar
    watchdog: dw_wdt: Support devices with non-fixed TOP values · 86445535
    Serge Semin authored
    In case if the DW Watchdog IP core is synthesised with
    WDT_USE_FIX_TOP == false, the TOP interval indexes make the device
    to load a custom periods to the counter. These periods are hardwired
    at the IP synthesis stage and can be within [2^8, 2^(WDT_CNT_WIDTH - 1)].
    Alas their values can't be detected at runtime and must be somehow
    supplied to the driver so one could properly determine the watchdog
    timeout intervals. For this purpose we suggest to have a vendor-
    specific dts property "snps,watchdog-tops" utilized, which would
    provide an array of sixteen counter values. At device probe stage they
    will be used to initialize the watchdog device timeouts determined
    from the array values and current clocks source rate.
    
    In order to have custom TOP values supported the driver must be
    altered in the following way. First of all the fixed-top values
    ready-to-use array must be determined for compatibility with currently
    supported devices, which were synthesised with WDT_USE_FIX_TOP == true.
    It will be used if either fixed TOP feature is detected being enabled or
    no custom TOPs are fetched from the device dt node. Secondly at the probe
    stage we must initialize an array of the watchdog timeouts corresponding
    to the detected TOPs list and the reference clock rate. For generality the
    procedure of initialization is designed in a way to support the TOPs array
    with no limitations on the items order or value. Finally the watchdog
    period search methods should be altered to support the new timeouts data
    structure.
    Signed-off-by: default avatarSerge Semin <Sergey.Semin@baikalelectronics.ru>
    Reviewed-by: default avatarGuenter Roeck <linux@roeck-us.net>
    Cc: Alexey Malahov <Alexey.Malahov@baikalelectronics.ru>
    Cc: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
    Cc: Arnd Bergmann <arnd@arndb.de>
    Cc: Rob Herring <robh+dt@kernel.org>
    Cc: linux-mips@vger.kernel.org
    Cc: devicetree@vger.kernel.org
    Link: https://lore.kernel.org/r/20200530073557.22661-5-Sergey.Semin@baikalelectronics.ruSigned-off-by: default avatarGuenter Roeck <linux@roeck-us.net>
    Signed-off-by: default avatarWim Van Sebroeck <wim@linux-watchdog.org>
    86445535
dw_wdt.c 12.6 KB