Message ID | 20200322211919.11335-9-linux@roeck-us.net (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | hw/arm: Implement i.MX watchdog support | expand |
On Sun, 22 Mar 2020 at 21:19, Guenter Roeck <linux@roeck-us.net> wrote: > > i.MX7 supports watchdog pretimeout interupts. With this commit, > the watchdog in mcimx7d-sabre is fully operational, including > pretimeout support. > > Signed-off-by: Guenter Roeck <linux@roeck-us.net> > diff --git a/include/hw/arm/fsl-imx7.h b/include/hw/arm/fsl-imx7.h > index 47826da2b7..da977f9ffb 100644 > --- a/include/hw/arm/fsl-imx7.h > +++ b/include/hw/arm/fsl-imx7.h > @@ -228,6 +228,11 @@ enum FslIMX7IRQs { > FSL_IMX7_USB2_IRQ = 42, > FSL_IMX7_USB3_IRQ = 40, > > + FSL_IMX7_WDOG1_IRQ = 78, > + FSL_IMX7_WDOG2_IRQ = 79, > + FSL_IMX7_WDOG3_IRQ = 10, > + FSL_IMX7_WDOG4_IRQ = 109, irq 10 for wdog3 seems to match the kernel's dts, but it's a bit weird that it's way out of the range of the others. Did you sanity check it against the imx7 data sheet and/or real h/w behaviour that it's not a typo for one-hundred-and-something? (108 would be the obvious guess...) Otherwise Reviewed-by: Peter Maydell <peter.maydell@linaro.org> thanks -- PMM
Hi Peter, On 4/16/20 8:29 AM, Peter Maydell wrote: > On Sun, 22 Mar 2020 at 21:19, Guenter Roeck <linux@roeck-us.net> wrote: >> >> i.MX7 supports watchdog pretimeout interupts. With this commit, >> the watchdog in mcimx7d-sabre is fully operational, including >> pretimeout support. >> >> Signed-off-by: Guenter Roeck <linux@roeck-us.net> > >> diff --git a/include/hw/arm/fsl-imx7.h b/include/hw/arm/fsl-imx7.h >> index 47826da2b7..da977f9ffb 100644 >> --- a/include/hw/arm/fsl-imx7.h >> +++ b/include/hw/arm/fsl-imx7.h >> @@ -228,6 +228,11 @@ enum FslIMX7IRQs { >> FSL_IMX7_USB2_IRQ = 42, >> FSL_IMX7_USB3_IRQ = 40, >> >> + FSL_IMX7_WDOG1_IRQ = 78, >> + FSL_IMX7_WDOG2_IRQ = 79, >> + FSL_IMX7_WDOG3_IRQ = 10, >> + FSL_IMX7_WDOG4_IRQ = 109, > > irq 10 for wdog3 seems to match the kernel's dts, but it's > a bit weird that it's way out of the range of the others. > Did you sanity check it against the imx7 data sheet and/or > real h/w behaviour that it's not a typo for > one-hundred-and-something? (108 would be the obvious guess...) > I actually did check, for that very same reason. To be sure I looked again. 10 is correct per datasheet. 108 is TZASC1 (TZASC (PL380) interrupt). > Otherwise > Reviewed-by: Peter Maydell <peter.maydell@linaro.org> > Thanks, Guenter
diff --git a/hw/arm/fsl-imx7.c b/hw/arm/fsl-imx7.c index d6cf7c48ce..89c3b64c06 100644 --- a/hw/arm/fsl-imx7.c +++ b/hw/arm/fsl-imx7.c @@ -447,11 +447,22 @@ static void fsl_imx7_realize(DeviceState *dev, Error **errp) FSL_IMX7_WDOG3_ADDR, FSL_IMX7_WDOG4_ADDR, }; + static const int FSL_IMX7_WDOGn_IRQ[FSL_IMX7_NUM_WDTS] = { + FSL_IMX7_WDOG1_IRQ, + FSL_IMX7_WDOG2_IRQ, + FSL_IMX7_WDOG3_IRQ, + FSL_IMX7_WDOG4_IRQ, + }; + object_property_set_bool(OBJECT(&s->wdt[i]), true, "pretimeout-support", + &error_abort); object_property_set_bool(OBJECT(&s->wdt[i]), true, "realized", &error_abort); sysbus_mmio_map(SYS_BUS_DEVICE(&s->wdt[i]), 0, FSL_IMX7_WDOGn_ADDR[i]); + sysbus_connect_irq(SYS_BUS_DEVICE(&s->wdt[i]), 0, + qdev_get_gpio_in(DEVICE(&s->a7mpcore), + FSL_IMX7_WDOGn_IRQ[i])); } /* diff --git a/include/hw/arm/fsl-imx7.h b/include/hw/arm/fsl-imx7.h index 47826da2b7..da977f9ffb 100644 --- a/include/hw/arm/fsl-imx7.h +++ b/include/hw/arm/fsl-imx7.h @@ -228,6 +228,11 @@ enum FslIMX7IRQs { FSL_IMX7_USB2_IRQ = 42, FSL_IMX7_USB3_IRQ = 40, + FSL_IMX7_WDOG1_IRQ = 78, + FSL_IMX7_WDOG2_IRQ = 79, + FSL_IMX7_WDOG3_IRQ = 10, + FSL_IMX7_WDOG4_IRQ = 109, + FSL_IMX7_PCI_INTA_IRQ = 125, FSL_IMX7_PCI_INTB_IRQ = 124, FSL_IMX7_PCI_INTC_IRQ = 123,
i.MX7 supports watchdog pretimeout interupts. With this commit, the watchdog in mcimx7d-sabre is fully operational, including pretimeout support. Signed-off-by: Guenter Roeck <linux@roeck-us.net> --- v2: No change hw/arm/fsl-imx7.c | 11 +++++++++++ include/hw/arm/fsl-imx7.h | 5 +++++ 2 files changed, 16 insertions(+)