From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id A04D9C4320A for ; Sun, 25 Jul 2021 22:03:29 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 8808E60F23 for ; Sun, 25 Jul 2021 22:03:29 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230393AbhGYVW6 (ORCPT ); Sun, 25 Jul 2021 17:22:58 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33360 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229531AbhGYVWz (ORCPT ); Sun, 25 Jul 2021 17:22:55 -0400 Received: from mail-qv1-xf32.google.com (mail-qv1-xf32.google.com [IPv6:2607:f8b0:4864:20::f32]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 5C7D7C061757; Sun, 25 Jul 2021 15:03:23 -0700 (PDT) Received: by mail-qv1-xf32.google.com with SMTP id w6so4184737qvh.3; Sun, 25 Jul 2021 15:03:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:date:from:to:cc:subject:message-id:references:mime-version :content-disposition:in-reply-to; bh=xTPjnj72RwbhWrm3sC22xz3JtSJ1xCVRc3vlUqpnb6Y=; b=kIOBsPesdK2Cs/aBRn+UN2bNhmfV/Ed2O3V9k7+1DLbEecS2KgJLN3n2EbX2GQzle7 MrAtdS7vEQCE4pPNcVCo/qMxJRnxC2xeDDRLnVW4NLtw6Eixt7Jdl3TolGBgbXvRKyO4 pOs/UxMMr/Jc3maO4KISlWRIMrIownJQLQlHdphY1p7J6wvHcndoJAD6wVuPkpUAjRHS GdJu1vM24M332DkPq2s3A+b95uB/+RFvnEkIJufLUe2uhhEzWTWgExuEcJGwGNQ2fO+b fzCzW/onlGQIj+4MmJqofq/pE8dhLQxkJ6bBxL4p7ufESP8qCoAd1h7njIlvGFGLxg+f HpVw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:date:from:to:cc:subject:message-id :references:mime-version:content-disposition:in-reply-to; bh=xTPjnj72RwbhWrm3sC22xz3JtSJ1xCVRc3vlUqpnb6Y=; b=q4KVcl6EHefz3Rv62Csj6/rtFFbZSJMXg41NffT3mnvLo0Bh0WwxMtI4jZupKsu4aQ owTFji+9u5ohSfYGcbjhZRZZDd2MHLJH7sYe8OAIw5qgbXroHKlHcuV3ngjYasTnHZfn 5CU30PiG6Hj8hnHUmVJhSwEmuCONETgtqDVeHAHscqYIk1l2ZqJYg3UA/BTzn203bynU 77zTubAvYH1rAfwU2lVrVoeC3+4IfNto9166BN8NdgGNmf8vvAPpNt1Rs2NTiNIfemDT b5NiNGsTVcgXmrq0S0ZghitQ4r0hbgbVV6Y19ztbFufM1UaVDJYRJAdLh4WOimfS8e96 tGEw== X-Gm-Message-State: AOAM533U1kHnnH0A9UXkL4o+HPhA8ckM19dP6efY5rGVHRbFkyhqBQwB aBH2MfcrPuGUF6CwGQegx2k= X-Google-Smtp-Source: ABdhPJyHir4b8kg9TVSretHh3TO/jkvMR4MIY+rgTiUFbIJcmzbyoAbuEDDudop27NJ/+XsTVVE5fg== X-Received: by 2002:a0c:fd48:: with SMTP id j8mr15179898qvs.60.1627250602643; Sun, 25 Jul 2021 15:03:22 -0700 (PDT) Received: from server.roeck-us.net ([2600:1700:e321:62f0:329c:23ff:fee3:9d7c]) by smtp.gmail.com with ESMTPSA id f62sm17871347qke.135.2021.07.25.15.03.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 25 Jul 2021 15:03:22 -0700 (PDT) Sender: Guenter Roeck Date: Sun, 25 Jul 2021 15:03:20 -0700 From: Guenter Roeck To: Ahmad Fatoum Cc: Wim Van Sebroeck , linux-watchdog@vger.kernel.org, kernel@pengutronix.de, linux-kernel@vger.kernel.org Subject: Re: [PATCH v4 4/5] watchdog: f71808e_wdt: refactor to platform device/driver pair Message-ID: <20210725220320.GE3578169@roeck-us.net> References: MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Thu, Jul 22, 2021 at 12:14:43PM +0200, Ahmad Fatoum wrote: > Driver so far wasn't ported to the driver model and registered > the watchdog device out of the init after probing the I/O ports > for a watchdog with correct vendor and device revision. > > Keep the device detection part at init time, but move watchdog > registration to a platform driver probe function. > > Suggested-by: Guenter Roeck > Signed-off-by: Ahmad Fatoum Reviewed-by: Guenter Roeck > --- > drivers/watchdog/f71808e_wdt.c | 42 +++++++++++++++++++++++++++++++---- > 1 file changed, 38 insertions(+), 4 deletions(-) > > diff --git a/drivers/watchdog/f71808e_wdt.c b/drivers/watchdog/f71808e_wdt.c > index efc6981d9a9b..d4cae73da002 100644 > --- a/drivers/watchdog/f71808e_wdt.c > +++ b/drivers/watchdog/f71808e_wdt.c > @@ -13,6 +13,7 @@ > #include > #include > #include > +#include > #include > > #define DRVNAME "f71808e_wdt" > @@ -432,10 +433,18 @@ static const struct watchdog_ops fintek_wdt_ops = { > .set_timeout = fintek_wdt_set_timeout, > }; > > -static int __init watchdog_init(int sioaddr) > +static int fintek_wdt_probe(struct platform_device *pdev) > { > struct watchdog_device *wdd; > int wdt_conf, err = 0; > + struct resource *res; > + int sioaddr; > + > + res = platform_get_resource(pdev, IORESOURCE_IO, 0); > + if (!res) > + return -ENXIO; > + > + sioaddr = res->start; > > watchdog.sioaddr = sioaddr; > watchdog.ident.options = WDIOF_SETTIMEOUT > @@ -468,6 +477,7 @@ static int __init watchdog_init(int sioaddr) > > superio_exit(sioaddr); > > + wdd->parent = &pdev->dev; > wdd->info = &watchdog.ident; > wdd->ops = &fintek_wdt_ops; > wdd->min_timeout = 1; > @@ -488,7 +498,7 @@ static int __init watchdog_init(int sioaddr) > fintek_wdt_set_timeout(wdd, timeout); > fintek_wdt_set_pulse_width(pulse_width); > > - return watchdog_register_device(wdd); > + return devm_watchdog_register_device(&pdev->dev, wdd); > } > > static int __init fintek_wdt_find(int sioaddr) > @@ -554,9 +564,19 @@ static int __init fintek_wdt_find(int sioaddr) > return err; > } > > +static struct platform_driver fintek_wdt_driver = { > + .probe = fintek_wdt_probe, > + .driver = { > + .name = DRVNAME, > + }, > +}; > + > +static struct platform_device *fintek_wdt_pdev; > + > static int __init fintek_wdt_init(void) > { > static const unsigned short addrs[] = { 0x2e, 0x4e }; > + struct resource wdt_res = {}; > int err = -ENODEV; > int i; > > @@ -573,12 +593,26 @@ static int __init fintek_wdt_init(void) > if (i == ARRAY_SIZE(addrs)) > return err; > > - return watchdog_init(addrs[i]); > + platform_driver_register(&fintek_wdt_driver); > + > + wdt_res.name = "superio port"; > + wdt_res.flags = IORESOURCE_IO; > + wdt_res.start = addrs[i]; > + wdt_res.end = addrs[i] + 1; > + > + fintek_wdt_pdev = platform_device_register_simple(DRVNAME, -1, &wdt_res, 1); > + if (IS_ERR(fintek_wdt_pdev)) { > + platform_driver_unregister(&fintek_wdt_driver); > + return PTR_ERR(fintek_wdt_pdev); > + } > + > + return 0; > } > > static void __exit fintek_wdt_exit(void) > { > - watchdog_unregister_device(&watchdog.wdd); > + platform_device_unregister(fintek_wdt_pdev); > + platform_driver_unregister(&fintek_wdt_driver); > } > > MODULE_DESCRIPTION("F71808E Watchdog Driver"); > -- > git-series 0.9.1