linux/drivers/watchdog/orion_wdt.c
<<
opti1on/spav2. 1on/form2. 1ona opti1o href="../linux+v3ue=7/drivers/watchdog/or v_wdt.c">opti1onimg src="../.static/gfx/right.png" alt=">>">opn/spav2.opnspav class="lxr_search">optiopti1oninput typionhidden" namionnavtarget" opti1oninput typiontext" namionsearch" idonsearch">opti1onbutt typionsubmit">Searchopti1oPrefs. 1on/a>opn/spav2.ti1o on/div2.ti1o onform ac v="ajax+*" method="post" onsubmit="return false;">opninput typionhidden" namionajax_lookup" idonajax_lookup" oti1o on/form2.oti1o ondiv class="headingbott m">. ndiv idonfile_contents"2
o o1n/a>nspav class="comment">/*n/spav2.o o2n/a>nspav class="comment"> * drivers/watchdog/or  v_wdt.cn/spav2.o o3n/a>nspav class="comment"> *n/spav2.o o4n/a>nspav class="comment"> * Watchdog driver for Or  v/Kirkwood processorsn/spav2.o o5n/a>nspav class="comment"> *n/spav2.o o6n/a>nspav class="comment"> * Author: Sylver Bruneau <sylver.bruneau@googlemail.com>n/spav2.o o7n/a>nspav class="comment"> *n/spav2.o o8n/a>nspav class="comment"> * This file is licensed under  the terms of the GNU General Publicn/spav2.o o9n/a>nspav class="comment"> * License vers 
  2. This program is licensed "as is" without anyn/spav2.o >
  a>nspav class="comment"> * warranty of any kind, whether express or implied.n/spav2.o 11n/a>nspav class="comment"> */n/spav2.o 12n/a>.o 13n/a>#defineona href="+code=pr_fmt" class="sref">pr_fmtn/a>(na href="+code=fmt" class="sref">fmtn/a>)ona href="+code=KBUILD_MODNAME" class="sref">KBUILD_MODNAMEn/a> nspav class="string">": "n/spav2ona href="+code=fmt" class="sref">fmtn/a>.o 14n/a>.o 15n/a>#include <linux/module.hn/a>>.o 16n/a>#include <linux/moduleparam.hn/a>>.o 17n/a>#include <linux/typis.hn/a>>.o 18n/a>#include <linux/kernel.hn/a>>.o 19n/a>#include <linux/miscdevice.hn/a>>.o 20n/a>#include <linux/platform_device.hn/a>>.o 21n/a>#include <linux/watchdog.hn/a>>.o 22n/a>#include <linux/init.hn/a>>.o 23n/a>#include <linux/io.hn/a>>.o 24n/a>#include <linux/spinlock.hn/a>>.o 25n/a>#include <linux/clk.hn/a>>.o 26n/a>#include <linux/err.hn/a>>.o 27n/a>#include <linux/of.hn/a>>.o 28n/a>#include <mach/bridge-regs.hn/a>>.o 29n/a>.o 3
  a>nspav class="comment">/*n/spav2.o 31n/a>nspav class="comment"> * Watchdog timer block registers.n/spav2.o 32n/a>nspav class="comment"> */n/spav2.o 33n/a>#defineona href="+code=TIMER_CTRL" class="sref">TIMER_CTRLn/a>              0x0000.o 34n/a>#defineona href="+code=WDT_EN" class="sref">WDT_ENn/a>                  0x0010.o 35n/a>#defineona href="+code=WDT_VAL" class="sref">WDT_VALn/a>                 0x0024.o 36n/a>.o 37n/a>#defineona href="+code=WDT_MAX_CYCLE_COUNT" class="sref">WDT_MAX_CYCLE_COUNTn/a>     0xffffffff.o 38n/a>#defineona href="+code=WDT_IN_USE" class="sref">WDT_IN_USEn/a>              0.o 39n/a>#defineona href="+code=WDT_OK_TO_CLOSE" class="sref">WDT_OK_TO_CLOSEn/a>         1.o 40n/a>.o 41n/a>staticona href="+code=bool" class="sref">booln/a> na href="+code=nowayout" class="sref">nowayoutn/a> =ona href="+code=WATCHDOG_NOWAYOUT" class="sref">WATCHDOG_NOWAYOUTn/a>;.o 42n/a>staticointona href="+code=heartbeat" class="sref">heartbeatn/a> =o-1;              nspav class="comment">/* module parameter (seconds) */n/spav2.o 43n/a>staticounsignedointona href="+code=wdt_max_dura
  v" class="sref">wdt_max_dura
  vn/a>;   nspav class="comment">/* (seconds) */n/spav2.o 44n/a>staticostructona href="+code=clk" class="sref">clkn/a> *na href="+code=clk" class="sref">clkn/a>;.o 45n/a>staticounsignedointona href="+code=wdt_tclk" class="sref">wdt_tclkn/a>;.o 46n/a>staticovoidona href="+code=__iomem" class="sref">__iomemn/a> *na href="+code=wdt_reg" class="sref">wdt_regn/a>;.o 47n/a>staticona href="+code=DEFINE_SPINLOCK" class="sref">DEFINE_SPINLOCKn/a>(na href="+code=wdt_lock" class="sref">wdt_lockn/a>);.o 48n/a>.o 49n/a>staticointona href="+code=or  v_wdt_ping" class="sref">or  v_wdt_pingn/a>(structona href="+code=watchdog_device" class="sref">watchdog_devicen/a> *na href="+code=wdt_dev" class="sref">wdt_devn/a>).o 50n/a>{.o 51n/a>        na href="+code=spin_lock" class="sref">spin_lockn/a>(&na href="+code=wdt_lock" class="sref">wdt_lockn/a>);.o 52n/a>.o 53n/a>        nspav class="comment">/* Reload watchdog dura
  v */n/spav2.o 54n/a>        na href="+code=writel" class="sref">writeln/a>(na href="+code=wdt_tclk" class="sref">wdt_tclkn/a> * na href="+code=wdt_dev" class="sref">wdt_devn/a>->na href="+code=timeout" class="sref">timeoutn/a>, na href="+code=wdt_reg" class="sref">wdt_regn/a> +ona href="+code=WDT_VAL" class="sref">WDT_VALn/a>);.o 55n/a>.o 56n/a>        na href="+code=spin_unlock" class="sref">spin_unlockn/a>(&na href="+code=wdt_lock" class="sref">wdt_lockn/a>);.o 57n/a>        return 0;.o 58n/a>}.o 59n/a>.o 60n/a>staticointona href="+code=or  v_wdt_start" class="sref">or  v_wdt_startn/a>(structona href="+code=watchdog_device" class="sref">watchdog_devicen/a> *na href="+code=wdt_dev" class="sref">wdt_devn/a>).o 61n/a>{.o 62n/a>        na href="+code=u32" class="sref">u32n/a> na href="+code=reg" class="sref">regn/a>;.o 63n/a>.o 64n/a>        na href="+code=spin_lock" class="sref">spin_lockn/a>(&na href="+code=wdt_lock" class="sref">wdt_lockn/a>);.o 65n/a>.o 66n/a>        nspav class="comment">/* Set watchdog dura
  v */n/spav2.o 67n/a>        na href="+code=writel" class="sref">writeln/a>(na href="+code=wdt_tclk" class="sref">wdt_tclkn/a> * na href="+code=wdt_dev" class="sref">wdt_devn/a>->na href="+code=timeout" class="sref">timeoutn/a>, na href="+code=wdt_reg" class="sref">wdt_regn/a> +ona href="+code=WDT_VAL" class="sref">WDT_VALn/a>);.o 68n/a>.o 69n/a>        nspav class="comment">/* Clear watchdog timer interrupt */n/spav2.o 70n/a>        na href="+code=reg" class="sref">regn/a> =ona href="+code=readl" class="sref">readln/a>(na href="+code=BRIDGE_CAUSE" class="sref">BRIDGE_CAUSEn/a>);.o 71n/a>        na href="+code=reg" class="sref">regn/a> &= ~na href="+code=WDT_INT_REQ" class="sref">WDT_INT_REQn/a>;.o 72n/a>        na href="+code=writel" class="sref">writeln/a>(na href="+code=reg" class="sref">regn/a>, na href="+code=BRIDGE_CAUSE" class="sref">BRIDGE_CAUSEn/a>);.o 73n/a>.o 74n/a>        nspav class="comment">/* Enable watchdog timer */n/spav2.o 75n/a>        na href="+code=reg" class="sref">regn/a> =ona href="+code=readl" class="sref">readln/a>(na href="+code=wdt_reg" class="sref">wdt_regn/a> +ona href="+code=TIMER_CTRL" class="sref">TIMER_CTRLn/a>);.o 76n/a>        na href="+code=reg" class="sref">regn/a> |=ona href="+code=WDT_EN" class="sref">WDT_ENn/a>;.o 77n/a>        na href="+code=writel" class="sref">writeln/a>(na href="+code=reg" class="sref">regn/a>, na href="+code=wdt_reg" class="sref">wdt_regn/a> +ona href="+code=TIMER_CTRL" class="sref">TIMER_CTRLn/a>);.o 78n/a>.o 79n/a>        nspav class="comment">/* Enable reset  v watchdog */n/spav2.o 80n/a>        na href="+code=reg" class="sref">regn/a> =ona href="+code=readl" class="sref">readln/a>(na href="+code=RSTOUTn_MASK" class="sref">RSTOUTn_MASKn/a>);.o 81n/a>        na href="+code=reg" class="sref">regn/a> |=ona href="+code=WDT_RESET_OUT_EN" class="sref">WDT_RESET_OUT_ENn/a>;.o 82n/a>        na href="+code=writel" class="sref">writeln/a>(na href="+code=reg" class="sref">regn/a>, na href="+code=RSTOUTn_MASK" class="sref">RSTOUTn_MASKn/a>);.o 83n/a>.o 84n/a>        na href="+code=spin_unlock" class="sref">spin_unlockn/a>(&na href="+code=wdt_lock" class="sref">wdt_lockn/a>);.o 85n/a>        return 0;.o 86n/a>}.o 87n/a>.o 88n/a>staticointona href="+code=or  v_wdt_stop" class="sref">or  v_wdt_stopn/a>(structona href="+code=watchdog_device" class="sref">watchdog_devicen/a> *na href="+code=wdt_dev" class="sref">wdt_devn/a>).o 89n/a>{.o 90n/a>        na href="+code=u32" class="sref">u32n/a> na href="+code=reg" class="sref">regn/a>;.o 91n/a>.o 92n/a>        na href="+code=spin_lock" class="sref">spin_lockn/a>(&na href="+code=wdt_lock" class="sref">wdt_lockn/a>);.o 93n/a>.o 94n/a>        nspav class="comment">/* Disable reset  v watchdog */n/spav2.o 95n/a>        na href="+code=reg" class="sref">regn/a> =ona href="+code=readl" class="sref">readln/a>(na href="+code=RSTOUTn_MASK" class="sref">RSTOUTn_MASKn/a>);.o 96n/a>        na href="+code=reg" class="sref">regn/a> &= ~na href="+code=WDT_RESET_OUT_EN" class="sref">WDT_RESET_OUT_ENn/a>;.o 97n/a>        na href="+code=writel" class="sref">writeln/a>(na href="+code=reg" class="sref">regn/a>, na href="+code=RSTOUTn_MASK" class="sref">RSTOUTn_MASKn/a>);.o 98n/a>.o 99n/a>        nspav class="comment">/* Disable watchdog timer */n/spav2.o100n/a>        na href="+code=reg" class="sref">regn/a> =ona href="+code=readl" class="sref">readln/a>(na href="+code=wdt_reg" class="sref">wdt_regn/a> +ona href="+code=TIMER_CTRL" class="sref">TIMER_CTRLn/a>);.o101n/a>        na href="+code=reg" class="sref">regn/a> &= ~na href="+code=WDT_EN" class="sref">WDT_ENn/a>;.o102n/a>        na href="+code=writel" class="sref">writeln/a>(na href="+code=reg" class="sref">regn/a>, na href="+code=wdt_reg" class="sref">wdt_regn/a> +ona href="+code=TIMER_CTRL" class="sref">TIMER_CTRLn/a>);.o103n/a>.o104n/a>        na href="+code=spin_unlock" class="sref">spin_unlockn/a>(&na href="+code=wdt_lock" class="sref">wdt_lockn/a>);.o105n/a>        return 0;.o106n/a>}.o107n/a>.o108n/a>staticounsignedointona href="+code=or  v_wdt_get_timeleft" class="sref">or  v_wdt_get_timeleftn/a>(structona href="+code=watchdog_device" class="sref">watchdog_devicen/a> *na href="+code=wdt_dev" class="sref">wdt_devn/a>).o109n/a>{.o110n/a>        unsignedointona href="+code=time_left" class="sref">time_leftn/a>;.o111n/a>.o112n/a>        na href="+code=spin_lock" class="sref">spin_lockn/a>(&na href="+code=wdt_lock" class="sref">wdt_lockn/a>);.o113n/a>        na href="+code=time_left" class="sref">time_leftn/a> =ona href="+code=readl" class="sref">readln/a>(na href="+code=wdt_reg" class="sref">wdt_regn/a> +ona href="+code=WDT_VAL" class="sref">WDT_VALn/a>) /ona href="+code=wdt_tclk" class="sref">wdt_tclkn/a>;.o114n/a>        na href="+code=spin_unlock" class="sref">spin_unlockn/a>(&na href="+code=wdt_lock" class="sref">wdt_lockn/a>);.o115n/a>.o116n/a>        return na href="+code=time_left" class="sref">time_leftn/a>;.o117n/a>}.o118n/a>.o119n/a>staticointona href="+code=or  v_wdt_set_timeout" class="sref">or  v_wdt_set_timeoutn/a>(structona href="+code=watchdog_device" class="sref">watchdog_devicen/a> *na href="+code=wdt_dev" class="sref">wdt_devn/a>,.o120n/a>                                 unsignedointona href="+code=timeout" class="sref">timeoutn/a>).o121n/a>{.o122n/a>        na href="+code=wdt_dev" class="sref">wdt_devn/a>->na href="+code=timeout" class="sref">timeoutn/a> =ona href="+code=timeout" class="sref">timeoutn/a>;.o123n/a>        return 0;.o124n/a>}.o125n/a>.o126n/a>staticoconstostructona href="+code=watchdog_info" class="sref">watchdog_infon/a> na href="+code=or  v_wdt_info" class="sref">or  v_wdt_infon/a> =o{.o127n/a>        .na href="+code=o>
  vs" class="sref">o>
  vsn/a> =ona href="+code=WDIOF_SETTIMEOUT" class="sref">WDIOF_SETTIMEOUTn/a> |ona href="+code=WDIOF_KEEPALIVEPING" class="sref">WDIOF_KEEPALIVEPINGn/a> |ona href="+code=WDIOF_MAGICCLOSE" class="sref">WDIOF_MAGICCLOSEn/a>,.o128n/a>        .na href="+code=identity" class="sref">identityn/a> =onspav class="string">"Or  v Watchdog"n/spav2,.o129n/a>};.o130n/a>.o131n/a>staticoconstostructona href="+code=watchdog_ops" class="sref">watchdog_opsn/a> na href="+code=or  v_wdt_ops" class="sref">or  v_wdt_opsn/a> =o{.o132n/a>        .na href="+code=owner" class="sref">ownern/a> =ona href="+code=THIS_MODULE" class="sref">THIS_MODULEn/a>,.o133n/a>        .na href="+code=start" class="sref">startn/a> =ona href="+code=or  v_wdt_start" class="sref">or  v_wdt_startn/a>,.o134n/a>        .na href="+code=stop" class="sref">stopn/a> =ona href="+code=or  v_wdt_stop" class="sref">or  v_wdt_stopn/a>,.o135n/a>        .na href="+code=ping" class="sref">pingn/a> =ona href="+code=or  v_wdt_ping" class="sref">or  v_wdt_pingn/a>,.o136n/a>        .na href="+code=set_timeout" class="sref">set_timeoutn/a> =ona href="+code=or  v_wdt_set_timeout" class="sref">or  v_wdt_set_timeoutn/a>,.o137n/a>        .na href="+code=get_timeleft" class="sref">get_timeleftn/a> =ona href="+code=or  v_wdt_get_timeleft" class="sref">or  v_wdt_get_timeleftn/a>,.o138n/a>};.o139n/a>.o140n/a>staticostructona href="+code=watchdog_device" class="sref">watchdog_devicen/a> na href="+code=or  v_wdt" class="sref">or  v_wdtn/a> =o{.o141n/a>        .na href="+code=info" class="sref">infon/a> =o&na href="+code=or  v_wdt_info" class="sref">or  v_wdt_infon/a>,.o142n/a>        .na href="+code=ops" class="sref">opsn/a> =o&na href="+code=or  v_wdt_ops" class="sref">or  v_wdt_opsn/a>,.o143n/a>};.o144n/a>.o145n/a>staticointona href="+code=__devinit" class="sref">__devinitn/a> na href="+code=or  v_wdt_probe" class="sref">or  v_wdt_proben/a>(structona href="+code=platform_device" class="sref">platform_devicen/a> *na href="+code=pdev" class="sref">pdevn/a>).o146n/a>{.o147n/a>        structona href="+code=resource" class="sref">resourcen/a> *na href="+code=res" class="sref">resn/a>;.o148n/a>        intona href="+code=ret" class="sref">retn/a>;.o149n/a>.o150n/a>        na href="+code=clk" class="sref">clkn/a> =ona href="+code=devm_clk_get" class="sref">devm_clk_getn/a>(&na href="+code=pdev" class="sref">pdevn/a>->na href="+code=dev" class="sref">devn/a>,ona href="+code=NULL" class="sref">NULLn/a>);.o151n/a>        if (na href="+code=IS_ERR" class="sref">IS_ERRn/a>(na href="+code=clk" class="sref">clkn/a>))o{.o152n/a>                na href="+code=dev_err" class="sref">dev_errn/a>(&na href="+code=pdev" class="sref">pdevn/a>->na href="+code=dev" class="sref">devn/a>,onspav class="string">"Or  v Watchdog missing clock\n"n/spav2);.o153n/a>                return -na href="+code=ENODEV" class="sref">ENODEVn/a>;.o154n/a>        }.o155n/a>        na href="+code=clk_prepare_enable" class="sref">clk_prepare_enablen/a>(na href="+code=clk" class="sref">clkn/a>);.o156n/a>        na href="+code=wdt_tclk" class="sref">wdt_tclkn/a> =ona href="+code=clk_get_rate" class="sref">clk_get_raten/a>(na href="+code=clk" class="sref">clkn/a>);.o157n/a>.o158n/a>        na href="+code=res" class="sref">resn/a> =ona href="+code=platform_get_resource" class="sref">platform_get_resourcen/a>(na href="+code=pdev" class="sref">pdevn/a>,ona href="+code=IORESOURCE_MEM" class="sref">IORESOURCE_MEMn/a>,o0);.o159n/a>        na href="+code=wdt_reg" class="sref">wdt_regn/a> =ona href="+code=devm_ioremap" class="sref">devm_ioremapn/a>(&na href="+code=pdev" class="sref">pdevn/a>->na href="+code=dev" class="sref">devn/a>,ona href="+code=res" class="sref">resn/a>->na href="+code=start" class="sref">startn/a>,ona href="+code=resource_size" class="sref">resource_sizen/a>(na href="+code=res" class="sref">resn/a>));.o160n/a>        if (!na href="+code=wdt_reg" class="sref">wdt_regn/a>).o161n/a>                return -na href="+code=ENOMEM" class="sref">ENOMEMn/a>;.o162n/a>.o163n/a>        na href="+code=wdt_max_dura
  v" class="sref">wdt_max_dura
  vn/a> =ona href="+code=WDT_MAX_CYCLE_COUNT" class="sref">WDT_MAX_CYCLE_COUNTn/a> /ona href="+code=wdt_tclk" class="sref">wdt_tclkn/a>;.o164n/a>.o165n/a>        if ((na href="+code=heartbeat" class="sref">heartbeatn/a> < 1) || (na href="+code=heartbeat" class="sref">heartbeatn/a> > na href="+code=wdt_max_dura
  v" class="sref">wdt_max_dura
  vn/a>)).o166n/a>                na href="+code=heartbeat" class="sref">heartbeatn/a> =ona href="+code=wdt_max_dura
  v" class="sref">wdt_max_dura
  vn/a>;.o167n/a>.o168n/a>        na href="+code=or  v_wdt" class="sref">or  v_wdtn/a>.na href="+code=timeout" class="sref">timeoutn/a> =ona href="+code=heartbeat" class="sref">heartbeatn/a>;.o169n/a>        na href="+code=or  v_wdt" class="sref">or  v_wdtn/a>.na href="+code=min_timeout" class="sref">min_timeoutn/a> =o1;.o170n/a>        na href="+code=or  v_wdt" class="sref">or  v_wdtn/a>.na href="+code=max_timeout" class="sref">max_timeoutn/a> =ona href="+code=wdt_max_dura
  v" class="sref">wdt_max_dura
  vn/a>;.o171n/a>.o172n/a>        na href="+code=watchdog_set_nowayout" class="sref">watchdog_set_nowayoutn/a>(&na href="+code=or  v_wdt" class="sref">or  v_wdtn/a>,ona href="+code=nowayout" class="sref">nowayoutn/a>);.o173n/a>        na href="+code=ret" class="sref">retn/a> =ona href="+code=watchdog_register_device" class="sref">watchdog_register_devicen/a>(&na href="+code=or  v_wdt" class="sref">or  v_wdtn/a>);.o174n/a>        if (na href="+code=ret" class="sref">retn/a>)o{.o175n/a>                na href="+code=clk_disable_unprepare" class="sref">clk_disable_unpreparen/a>(na href="+code=clk" class="sref">clkn/a>);.o176n/a>                return na href="+code=ret" class="sref">retn/a>;.o177n/a>        }.o178n/a>.o179n/a>        na href="+code=pr_info" class="sref">pr_infon/a>(nspav class="string">"Initial timeout %d sec%s\n"n/spav2,.o180n/a>                na href="+code=heartbeat" class="sref">heartbeatn/a>,ona href="+code=nowayout" class="sref">nowayoutn/a> ?onspav class="string">", nowayout"n/spav2o:onspav class="string">""n/spav2);.o181n/a>        return 0;.o182n/a>}.o183n/a>.o184n/a>staticointona href="+code=__devexit" class="sref">__devexitn/a> na href="+code=or  v_wdt_remove" class="sref">or  v_wdt_removen/a>(structona href="+code=platform_device" class="sref">platform_devicen/a> *na href="+code=pdev" class="sref">pdevn/a>).o185n/a>{.o186n/a>        na href="+code=watchdog_unregister_device" class="sref">watchdog_unregister_devicen/a>(&na href="+code=or  v_wdt" class="sref">or  v_wdtn/a>);.o187n/a>        na href="+code=clk_disable_unprepare" class="sref">clk_disable_unpreparen/a>(na href="+code=clk" class="sref">clkn/a>);.o188n/a>        return 0;.o189n/a>}.o190n/a>.o191n/a>staticovoidona href="+code=or  v_wdt_shutdowv" class="sref">or  v_wdt_shutdowvn/a>(structona href="+code=platform_device" class="sref">platform_devicen/a> *na href="+code=pdev" class="sref">pdevn/a>).o192n/a>{.o193n/a>        na href="+code=or  v_wdt_stop" class="sref">or  v_wdt_stopn/a>(&na href="+code=or  v_wdt" class="sref">or  v_wdtn/a>);.o194n/a>}.o195n/a>.o196n/a>staticoconstostructona href="+code=of_device_id" class="sref">of_device_idn/a> na href="+code=or  v_wdt_of_match_table" class="sref">or  v_wdt_of_match_tablen/a>[]ona href="+code=__devinitdata" class="sref">__devinitdatan/a> =o{.o197n/a>        { .na href="+code=compatible" class="sref">compatiblen/a> =onspav class="string">"marvell,or  v-wdt"n/spav2, },.o198n/a>        {},.o199n/a>};.o200n/a>na href="+code=MODULE_DEVICE_TABLE" class="sref">MODULE_DEVICE_TABLEn/a>(na href="+code=of" class="sref">ofn/a>,ona href="+code=or  v_wdt_of_match_table" class="sref">or  v_wdt_of_match_tablen/a>);.o201n/a>.o202n/a>staticostructona href="+code=platform_driver" class="sref">platform_drivern/a> na href="+code=or  v_wdt_driver" class="sref">or  v_wdt_drivern/a> =o{.o203n/a>        .na href="+code=probe" class="sref">proben/a>          =ona href="+code=or  v_wdt_probe" class="sref">or  v_wdt_proben/a>,.o204n/a>        .na href="+code=remove" class="sref">removen/a>         =ona href="+code=__devexit_p" class="sref">__devexit_pn/a>(na href="+code=or  v_wdt_remove" class="sref">or  v_wdt_removen/a>),.o205n/a>        .na href="+code=shutdowv" class="sref">shutdowvn/a>       =ona href="+code=or  v_wdt_shutdowv" class="sref">or  v_wdt_shutdowvn/a>,.o206n/a>        .na href="+code=driver" class="sref">drivern/a>         =o{.o207n/a>                .na href="+code=owner" class="sref">ownern/a>  =ona href="+code=THIS_MODULE" class="sref">THIS_MODULEn/a>,.o208n/a>                .na href="+code=nami" class="sref">namin/a>   =onspav class="string">"or  v_wdt"n/spav2,.o209n/a>                .na href="+code=of_match_table" class="sref">of_match_tablen/a> =ona href="+code=of_match_ptr" class="sref">of_match_ptrn/a>(na href="+code=or  v_wdt_of_match_table" class="sref">or  v_wdt_of_match_tablen/a>),.o210n/a>        },.o211n/a>};.o212n/a>.o213n/a>na href="+code=module_platform_driver" class="sref">module_platform_drivern/a>(na href="+code=or  v_wdt_driver" class="sref">or  v_wdt_drivern/a>);.o214n/a>.o215n/a>na href="+code=MODULE_AUTHOR" class="sref">MODULE_AUTHORn/a>(nspav class="string">"Sylver Bruneau <sylver.bruneau@googlemail.com>"n/spav2);.o216n/a>na href="+code=MODULE_DESCRIPTION" class="sref">MODULE_DESCRIPTIONn/a>(nspav class="string">"Or  v Processor Watchdog"n/spav2);.o217n/a>.o218n/a>na href="+code=module_param" class="sref">module_paramn/a>(na href="+code=heartbeat" class="sref">heartbeatn/a>,oint,o0);.o219n/a>na href="+code=MODULE_PARM_DESC" class="sref">MODULE_PARM_DESCn/a>(na href="+code=heartbeat" class="sref">heartbeatn/a>,onspav class="string">"Initial watchdog heartbeatoin seconds"n/spav2);.o220n/a>.o221n/a>na href="+code=module_param" class="sref">module_paramn/a>(na href="+code=nowayout" class="sref">nowayoutn/a>,ona href="+code=bool" class="sref">booln/a>,o0);.o222n/a>na href="+code=MODULE_PARM_DESC" class="sref">MODULE_PARM_DESCn/a>(na href="+code=nowayout" class="sref">nowayoutn/a>,onspav class="string">"Watchdog cannot be stopped once started (default="n/spav2.o223n/a>                                na href="+code=__MODULE_STRING" class="sref">__MODULE_STRINGn/a>(na href="+code=WATCHDOG_NOWAYOUT" class="sref">WATCHDOG_NOWAYOUTn/a>)onspav class="string">")"n/spav2);.o224n/a>.o225n/a>na href="+code=MODULE_LICENSE" class="sref">MODULE_LICENSEn/a>(nspav class="string">"GPL"n/spav2);.o226n/a>na href="+code=MODULE_ALIAS_MISCDEV" class="sref">MODULE_ALIAS_MISCDEVn/a>(na href="+code=WATCHDOG_MINOR" class="sref">WATCHDOG_MINORn/a>);.o227n/a>
lxr.linux.no kindly hosted by Redpill Linpro ASn/a>, provider of Linuxoconsulting and opera vs services since 1995.