lkml.org 
[lkml]   [2018]   [Mar]   [22]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    From
    Date
    SubjectRe: [PATCH v2 4/8] reset: Renesas RZ/N1 reboot driver
    Hi Michel,

    On Thu, Mar 22, 2018 at 12:44 PM, Michel Pollet
    <michel.pollet@bp.renesas.com> wrote:
    > The Renesas RZ/N1 Family (Part #R9A06G0xx) needs a small driver
    > to reboot the Cortex-A7 cores. This driver is a sub driver of
    > the sysctrl MFD.
    >
    > Signed-off-by: Michel Pollet <michel.pollet@bp.renesas.com>

    Thanks for your patch!

    > --- /dev/null
    > +++ b/drivers/power/reset/rzn1-reboot.c
    > @@ -0,0 +1,109 @@
    > +// SPDX-License-Identifier: GPL-2.0
    > +/*
    > + * RZ/N1 reboot driver
    > + *
    > + * Copyright (C) 2018 Renesas Electronics Europe Limited
    > + *
    > + * Michel Pollet <michel.pollet@bp.renesas.com>, <buserror@gmail.com>
    > + * Derived from zx-reboot.c
    > + */
    > +
    > +#include <linux/delay.h>
    > +#include <linux/io.h>
    > +#include <linux/mfd/syscon.h>
    > +#include <linux/module.h>
    > +#include <linux/notifier.h>
    > +#include <linux/of_address.h>

    I don't think you need <linux/of_address.h>.

    > +#include <linux/platform_device.h>
    > +#include <linux/reboot.h>
    > +#include <linux/regmap.h>
    > +
    > +/* Definitions from the SDK rzn1-sysctrl.h autogenerated file */
    > +#define RZN1_SYSCTRL_REG_RSTEN 0x120
    > +#define RZN1_SYSCTRL_REG_RSTEN_MRESET_EN 0
    > +#define RZN1_SYSCTRL_REG_RSTEN_WDA7RST_EN 1
    > +#define RZN1_SYSCTRL_REG_RSTEN_WDA7RST_EN_MASK 0x6
    > +#define RZN1_SYSCTRL_REG_RSTEN_WDM3RST_EN 3
    > +#define RZN1_SYSCTRL_REG_RSTEN_CM3LOCKUPRST_EN 4
    > +#define RZN1_SYSCTRL_REG_RSTEN_CM3SYSRESET_EN 5
    > +#define RZN1_SYSCTRL_REG_RSTEN_SWRST_EN 6
    > +#define RZN1_SYSCTRL_REG_RSTCTRL 0x198
    > +#define RZN1_SYSCTRL_REG_RSTCTRL_WDA7RST_REQ 1
    > +#define RZN1_SYSCTRL_REG_RSTCTRL_WDA7RST_REQ_MASK 0x6
    > +#define RZN1_SYSCTRL_REG_RSTCTRL_WDM3RST_REQ 3
    > +#define RZN1_SYSCTRL_REG_RSTCTRL_CM3LOCKUPRST_REQ 4
    > +#define RZN1_SYSCTRL_REG_RSTCTRL_CM3SYSRESET_REQ 5
    > +#define RZN1_SYSCTRL_REG_RSTCTRL_SWRST_REQ 6
    > +
    > +
    > +static struct regmap *_sysctrl;

    Variable names starting with an underscore are frowned upon.

    > +static int rzn1_reboot_probe(struct platform_device *pdev)
    > +{
    > + int err;
    > + struct device *parent;
    > +
    > + parent = pdev->dev.parent;
    > + if (parent && parent->of_node) {
    > + _sysctrl = syscon_node_to_regmap(parent->of_node);
    > + } else {
    > + dev_err(&pdev->dev, "couldn't find sysctrl node\n");
    > + return -ENODEV;
    > + }

    if (!parent || !parent->of_node) {
    dev_err(&pdev->dev, "couldn't find sysctrl node\n");
    return -ENODEV;
    }
    _sysctrl = syscon_node_to_regmap(parent->of_node);

    > + if (IS_ERR(_sysctrl)) {
    > + dev_err(&pdev->dev, "couldn't find find regmap\n");
    > + return PTR_ERR(_sysctrl);
    > + }
    > + err = register_restart_handler(&rzn1_reboot_nb);
    > + if (err) {
    > + dev_err(&pdev->dev, "register restart handler failed(err=%d)\n",
    > + err);
    > + }
    > +
    > + return err;
    > +}
    > +
    > +static const struct of_device_id rzn1_reboot_of_match[] = {
    > + { .compatible = "renesas,r9a06g032-reboot" },
    > + { .compatible = "renesas,rzn1-reboot" },

    Matching against the second (family-specific) compatible value should
    be sufficient.

    > + {}
    > +};
    > +MODULE_DEVICE_TABLE(of, rzn1_reboot_of_match);

    Gr{oetje,eeting}s,

    Geert

    --
    Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org

    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

    \
     
     \ /
      Last update: 2018-03-22 13:49    [W:3.704 / U:0.152 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site