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=-7.0 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_PASS,URIBL_BLOCKED autolearn=ham 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 ABEA3C10F14 for ; Tue, 9 Apr 2019 03:25:24 +0000 (UTC) Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 6908620880 for ; Tue, 9 Apr 2019 03:25:24 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="g0usmKkz"; dkim=fail reason="signature verification failed" (1024-bit key) header.d=nxp.com header.i=@nxp.com header.b="QWUloYdh" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 6908620880 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=nxp.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+infradead-linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20170209; h=Sender: Content-Transfer-Encoding:Content-Type:Cc:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:In-Reply-To:References: Message-ID:Date:Subject:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=TW3x+6IJ8CKKJILqw0s+qfF+3cVo4Gbhy7K8GUVEtbU=; b=g0usmKkzD3YKfO v5iPPvK0inZwrDPaRGFiXLETbdwsN7L+HwxsN68jdVbHieH+b0EYLiqhEW8xThkF3merU6NQv0Hk6 stuUnMRetDhexe6RrOIV0fMVMPeR1eZfd4dI/lf1Nb6Yc8q86ZOspA6sqjAiDomFE2O5/09oqOGBy 39I3bIUNPtnEcXqlAU0RYE2YF1h1m/a1VXiYp/vMeurPpwLcswM6awrjZtfiASoFOMb5amb6oP2wp 9CyimZ3yP3TvF0A2nYsNHJtqGB0ByFlB9s+HPJ9Km+0Gb1j3k2aJx4Dk7aJ0RhVV1NU7YrhXCYHUx qoYfDInXYHFwp84fpfSg==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.90_1 #2 (Red Hat Linux)) id 1hDhNw-0007TN-11; Tue, 09 Apr 2019 03:25:20 +0000 Received: from mail-am5eur02on0608.outbound.protection.outlook.com ([2a01:111:f400:fe07::608] helo=EUR02-AM5-obe.outbound.protection.outlook.com) by bombadil.infradead.org with esmtps (Exim 4.90_1 #2 (Red Hat Linux)) id 1hDhNr-0007SS-Fp for linux-arm-kernel@lists.infradead.org; Tue, 09 Apr 2019 03:25:17 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=wfGfXFmyd6e0lkpWoxkIitbi+X8yUACOMs42hyst25U=; b=QWUloYdhpbx3KrO+XKixQQkR2aJt0IIpiA6jK/v3Z7dGAXNm2m1atvBN7qYastS9kV+G6OItUSI3VDl2ePbD2CWx7TPZ8+llUMtSTZSu1Sj6fIX1iDKARxyL1AUVaTaPYOh293WDNbvhgvuVjxUk4Il8ZOCgeMMoUyIKO2e/tmo= Received: from AM0PR04MB4211.eurprd04.prod.outlook.com (52.134.92.158) by AM0PR04MB5089.eurprd04.prod.outlook.com (52.134.89.85) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1771.19; Tue, 9 Apr 2019 03:25:10 +0000 Received: from AM0PR04MB4211.eurprd04.prod.outlook.com ([fe80::8cda:4e52:8e87:8f0e]) by AM0PR04MB4211.eurprd04.prod.outlook.com ([fe80::8cda:4e52:8e87:8f0e%2]) with mapi id 15.20.1771.016; Tue, 9 Apr 2019 03:25:10 +0000 From: Aisheng Dong To: Anson Huang , "robh+dt@kernel.org" , "mark.rutland@arm.com" , "shawnguo@kernel.org" , "s.hauer@pengutronix.de" , "kernel@pengutronix.de" , "festevam@gmail.com" , "a.zummo@towertech.it" , "alexandre.belloni@bootlin.com" , "ulf.hansson@linaro.org" , "sboyd@kernel.org" , Peng Fan , Daniel Baluta , "devicetree@vger.kernel.org" , "linux-kernel@vger.kernel.org" , "linux-arm-kernel@lists.infradead.org" , "linux-rtc@vger.kernel.org" Subject: RE: [PATCH V6 4/4] rtc: imx-sc: add rtc alarm support Thread-Topic: [PATCH V6 4/4] rtc: imx-sc: add rtc alarm support Thread-Index: AQHU7n4FMdKcp4NQJ0ukn8zURCHpWaYzKXfg Date: Tue, 9 Apr 2019 03:25:10 +0000 Message-ID: References: <1554777487-31075-1-git-send-email-Anson.Huang@nxp.com> <1554777487-31075-4-git-send-email-Anson.Huang@nxp.com> In-Reply-To: <1554777487-31075-4-git-send-email-Anson.Huang@nxp.com> Accept-Language: zh-CN, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: spf=none (sender IP is ) smtp.mailfrom=aisheng.dong@nxp.com; x-originating-ip: [119.31.174.66] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 0287eabb-303f-41c7-6bf5-08d6bc9af8fe x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600139)(711020)(4605104)(4618075)(2017052603328)(7193020); SRVR:AM0PR04MB5089; x-ms-traffictypediagnostic: AM0PR04MB5089: x-microsoft-antispam-prvs: x-forefront-prvs: 000227DA0C x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(396003)(366004)(346002)(376002)(39860400002)(136003)(189003)(199004)(26005)(6506007)(4326008)(71190400001)(2501003)(44832011)(446003)(2201001)(14454004)(97736004)(476003)(102836004)(186003)(76176011)(33656002)(53546011)(86362001)(11346002)(66066001)(71200400001)(53936002)(6246003)(478600001)(110136005)(316002)(25786009)(7416002)(3846002)(6116002)(486006)(7696005)(55016002)(7736002)(8936002)(8676002)(81156014)(81166006)(9686003)(6436002)(229853002)(14444005)(5660300002)(256004)(68736007)(2906002)(106356001)(99286004)(105586002)(74316002)(305945005)(52536014)(921003)(1121003); DIR:OUT; SFP:1101; SCL:1; SRVR:AM0PR04MB5089; H:AM0PR04MB4211.eurprd04.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; received-spf: None (protection.outlook.com: nxp.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam-message-info: TaMp1xXyt1W8AFKeuKN+2xcG93xLKp3QUOJ3Itn3PkE9ylvMGq199pEr0vNMBQlw80aJ8xbdL+RK9tNfHQbVIfNEB/ADR0HgKKDprWw0AwBCBfSAFgEcQMUZdRtfbW6oTSHsMs0tTElMpB6FA+InzewbDy9nMqhwmBeBgTpUdfXZHOJM6FZlVdzL+vkSUs+lEHLFfkyfQQjEffm/W+g5z2UyI+YZE1i0a2UhzdarEZyQV5o49sX3/xVOWjEd6+ziy+hsAuOW3jT7W+4cYF8JeTpDAmWuYZ9e+B+rBAxONZu/ha78YM6q/p5iPo520YJlvlHJEx3gHb4nRSACPP30TgQs/LVJ/DiniiG7LS+0+cybtfqvF241kxWRSjF4a0MLaaJ8g5E654fVEThPgmH7LSW8OAAU7HLdHQFQPHoENA4= MIME-Version: 1.0 X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 0287eabb-303f-41c7-6bf5-08d6bc9af8fe X-MS-Exchange-CrossTenant-originalarrivaltime: 09 Apr 2019 03:25:10.6461 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR04MB5089 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20190408_202515_538521_313B4D35 X-CRM114-Status: GOOD ( 21.17 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: dl-linux-imx Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+infradead-linux-arm-kernel=archiver.kernel.org@lists.infradead.org > From: Anson Huang > Sent: Tuesday, April 9, 2019 10:44 AM > Subject: [PATCH V6 4/4] rtc: imx-sc: add rtc alarm support > > Add i.MX system controller RTC alarm support, the RTC alarm is implemented > via SIP(silicon provider) runtime service call and ARM-Trusted-Firmware will > communicate with system controller via MU(message unit) IPC to set RTC > alarm. When RTC alarm fires, system controller will generate a common MU > irq event and notify system controller RTC driver to handle the irq event. > > Signed-off-by: Anson Huang > --- > Changes since V5: > - move the irq alarm enable RPC to imx-scu-irq driver, and rtc driver just > call the > API to enable/disable alarm. > --- > drivers/rtc/rtc-imx-sc.c | 84 > ++++++++++++++++++++++++++++++++++++++++++++++++ > 1 file changed, 84 insertions(+) > > diff --git a/drivers/rtc/rtc-imx-sc.c b/drivers/rtc/rtc-imx-sc.c index > 19642bf..3eb4db0 100644 > --- a/drivers/rtc/rtc-imx-sc.c > +++ b/drivers/rtc/rtc-imx-sc.c > @@ -3,6 +3,7 @@ > * Copyright 2018 NXP. > */ > > +#include > #include > #include > #include > @@ -11,11 +12,15 @@ > #include > > #define IMX_SC_TIMER_FUNC_GET_RTC_SEC1970 9 > +#define IMX_SC_TIMER_FUNC_SET_RTC_ALARM 8 > #define IMX_SC_TIMER_FUNC_SET_RTC_TIME 6 > > #define IMX_SIP_SRTC 0xC2000002 > #define IMX_SIP_SRTC_SET_TIME 0x0 > > +#define SC_IRQ_GROUP_RTC 2 > +#define SC_IRQ_RTC 1 > + > static struct imx_sc_ipc *rtc_ipc_handle; static struct rtc_device > *imx_sc_rtc; > > @@ -24,6 +29,16 @@ struct imx_sc_msg_timer_get_rtc_time { > u32 time; > } __packed; > > +struct imx_sc_msg_timer_rtc_set_alarm { > + struct imx_sc_rpc_msg hdr; > + u16 year; > + u8 mon; > + u8 day; > + u8 hour; > + u8 min; > + u8 sec; > +} __packed; > + > static int imx_sc_rtc_read_time(struct device *dev, struct rtc_time *tm) { > struct imx_sc_msg_timer_get_rtc_time msg; @@ -60,9 +75,74 @@ static > int imx_sc_rtc_set_time(struct device *dev, struct rtc_time *tm) > return res.a0; > } > > +static int imx_sc_rtc_alarm_irq_enable(struct device *dev, unsigned int > +enable) { > + imx_scu_irq_enable(SC_IRQ_GROUP_RTC, SC_IRQ_RTC, enable); > + > + return 0; > +} > + > +static int imx_sc_rtc_read_alarm(struct device *dev, struct rtc_wkalrm > +*alrm) { I still think here needs a doc explain why needs this and why it's safe to do that. Otherwise: Reviewed-by: Dong Aisheng > + return 0; > +} > + > +static int imx_sc_rtc_set_alarm(struct device *dev, struct rtc_wkalrm > +*alrm) { > + struct imx_sc_msg_timer_rtc_set_alarm msg; > + struct imx_sc_rpc_msg *hdr = &msg.hdr; > + int ret; > + struct rtc_time *alrm_tm = &alrm->time; > + > + hdr->ver = IMX_SC_RPC_VERSION; > + hdr->svc = IMX_SC_RPC_SVC_TIMER; > + hdr->func = IMX_SC_TIMER_FUNC_SET_RTC_ALARM; > + hdr->size = 3; > + > + msg.year = alrm_tm->tm_year + 1900; > + msg.mon = alrm_tm->tm_mon + 1; > + msg.day = alrm_tm->tm_mday; > + msg.hour = alrm_tm->tm_hour; > + msg.min = alrm_tm->tm_min; > + msg.sec = alrm_tm->tm_sec; > + > + ret = imx_scu_call_rpc(rtc_ipc_handle, &msg, true); > + if (ret) { > + dev_err(dev, "set rtc alarm failed, ret %d\n", ret); > + return ret; > + } > + > + ret = imx_sc_rtc_alarm_irq_enable(dev, alrm->enabled); > + if (ret) { > + dev_err(dev, "enable rtc alarm failed, ret %d\n", ret); > + return ret; > + } > + > + return 0; > +} > + > static const struct rtc_class_ops imx_sc_rtc_ops = { > .read_time = imx_sc_rtc_read_time, > .set_time = imx_sc_rtc_set_time, > + .read_alarm = imx_sc_rtc_read_alarm, > + .set_alarm = imx_sc_rtc_set_alarm, > + .alarm_irq_enable = imx_sc_rtc_alarm_irq_enable, }; > + > +static int imx_sc_rtc_alarm_sc_notify(struct notifier_block *nb, > + unsigned long event, void *group) Not necessary to have such a long function name. Imx_sc_rtc_alarm_notify() should be ok Regards Dong Aisheng > +{ > + /* ignore non-rtc irq */ > + if (!((event & SC_IRQ_RTC) && (*(u8 *)group == SC_IRQ_GROUP_RTC))) > + return 0; > + > + rtc_update_irq(imx_sc_rtc, 1, RTC_IRQF | RTC_AF); > + > + return 0; > +} > + > +static struct notifier_block imx_sc_rtc_alarm_sc_notifier = { > + .notifier_call = imx_sc_rtc_alarm_sc_notify, > }; > > static int imx_sc_rtc_probe(struct platform_device *pdev) @@ -73,6 +153,8 > @@ static int imx_sc_rtc_probe(struct platform_device *pdev) > if (ret) > return ret; > > + device_init_wakeup(&pdev->dev, true); > + > imx_sc_rtc = devm_rtc_allocate_device(&pdev->dev); > if (IS_ERR(imx_sc_rtc)) > return PTR_ERR(imx_sc_rtc); > @@ -87,6 +169,8 @@ static int imx_sc_rtc_probe(struct platform_device > *pdev) > return ret; > } > > + imx_scu_irq_register_notifier(&imx_sc_rtc_alarm_sc_notifier); > + > return 0; > } > > -- > 2.7.4 _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel