From patchwork Mon Jun 4 12:07:42 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alexandre Belloni X-Patchwork-Id: 924994 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=linux-rtc-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=bootlin.com Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 40ztxG56LSz9ryk for ; Mon, 4 Jun 2018 22:08:02 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751590AbeFDMIB (ORCPT ); Mon, 4 Jun 2018 08:08:01 -0400 Received: from mail.bootlin.com ([62.4.15.54]:47578 "EHLO mail.bootlin.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751354AbeFDMIB (ORCPT ); Mon, 4 Jun 2018 08:08:01 -0400 Received: by mail.bootlin.com (Postfix, from userid 110) id 77F16207A9; Mon, 4 Jun 2018 14:07:59 +0200 (CEST) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on mail.bootlin.com X-Spam-Level: X-Spam-Status: No, score=-1.0 required=5.0 tests=ALL_TRUSTED,SHORTCIRCUIT, URIBL_BLOCKED shortcircuit=ham autolearn=disabled version=3.4.0 Received: from localhost (hy283-1-82-246-155-60.fbx.proxad.net [82.246.155.60]) by mail.bootlin.com (Postfix) with ESMTPSA id 1AD7B20703; Mon, 4 Jun 2018 14:07:59 +0200 (CEST) From: Alexandre Belloni To: linux-rtc@vger.kernel.org Cc: linux-kernel@vger.kernel.org, Alexandre Belloni Subject: [PATCH] rtc: mrst: switch to devm_rtc_allocate_device Date: Mon, 4 Jun 2018 14:07:42 +0200 Message-Id: <20180604120742.6084-1-alexandre.belloni@bootlin.com> X-Mailer: git-send-email 2.17.1 Sender: linux-rtc-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-rtc@vger.kernel.org Switch to devm_rtc_allocate_device/rtc_device_unregister to allow for further improvements. Signed-off-by: Alexandre Belloni --- drivers/rtc/rtc-mrst.c | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/drivers/rtc/rtc-mrst.c b/drivers/rtc/rtc-mrst.c index fcb9de5218b2..a3c528f7e833 100644 --- a/drivers/rtc/rtc-mrst.c +++ b/drivers/rtc/rtc-mrst.c @@ -341,12 +341,11 @@ static int vrtc_mrst_do_probe(struct device *dev, struct resource *iomem, mrst_rtc.dev = dev; dev_set_drvdata(dev, &mrst_rtc); - mrst_rtc.rtc = rtc_device_register(driver_name, dev, - &mrst_rtc_ops, THIS_MODULE); - if (IS_ERR(mrst_rtc.rtc)) { - retval = PTR_ERR(mrst_rtc.rtc); - goto cleanup0; - } + mrst_rtc.rtc = devm_rtc_allocate_device(dev); + if (IS_ERR(mrst_rtc.rtc)) + return PTR_ERR(mrst_rtc.rtc); + + mrst_rtc.rtc->ops = &mrst_rtc_ops; rename_region(iomem, dev_name(&mrst_rtc.rtc->dev)); @@ -365,14 +364,21 @@ static int vrtc_mrst_do_probe(struct device *dev, struct resource *iomem, if (retval < 0) { dev_dbg(dev, "IRQ %d is already in use, err %d\n", rtc_irq, retval); - goto cleanup1; + goto cleanup0; } } + + retval = rtc_register_device(mrst_rtc.rtc); + if (retval) { + retval = PTR_ERR(mrst_rtc.rtc); + goto cleanup1; + } + dev_dbg(dev, "initialised\n"); return 0; cleanup1: - rtc_device_unregister(mrst_rtc.rtc); + free_irq(rtc_irq, mrst->rtc); cleanup0: mrst_rtc.dev = NULL; release_mem_region(iomem->start, resource_size(iomem)); @@ -397,7 +403,6 @@ static void rtc_mrst_do_remove(struct device *dev) if (mrst->irq) free_irq(mrst->irq, mrst->rtc); - rtc_device_unregister(mrst->rtc); mrst->rtc = NULL; iomem = mrst->iomem;