Received: by 2002:a05:7208:9594:b0:7e:5202:c8b4 with SMTP id gs20csp2222579rbb; Tue, 27 Feb 2024 15:06:11 -0800 (PST) X-Forwarded-Encrypted: i=3; AJvYcCUb2R8iBiJUtjLfrk24C10ZmRUQZTZsZJcUnccvIhu21LfCRo2/IFzZw7I5x0+htrbLags+sd5LgYvS0TsDuqPt/Bz/4uO7Oi/9NalaeA== X-Google-Smtp-Source: AGHT+IHtBl4tQIPn8rWC2PquA9YrZ/wxiL6zxsQYbz395FyCrDhNr2KaCEubLOrrTgpbzc0W1m8H X-Received: by 2002:a05:6402:b2d:b0:564:151c:747a with SMTP id bo13-20020a0564020b2d00b00564151c747amr7385358edb.27.1709075171307; Tue, 27 Feb 2024 15:06:11 -0800 (PST) ARC-Seal: i=2; a=rsa-sha256; t=1709075171; cv=pass; d=google.com; s=arc-20160816; b=u9KIc2V+dNSMxZHWK++jBak5vEjs0YBOSE3A6r3WhUEt5XQp7Ntp09hY/J12pv5Swb FvQM22PmYolx76tKKd6DJi908rxfHU3INlHoT7cv7QAO36iAflD4/7XpgznEhltx5rbt SXpujlBy0QSotWEf9tavFmgVUsJVdU70iHuxYwJpGigi2R8aoK7bh1jDVH/EhWM//6j2 2Cez1O0vIZq4DlmFhf9ZbyzTvQTqToseJlH0OtG7jZMYr0YyhA300d/bntCrggyqjMVb Z2rW2jg/3FqLfL828bd65tmV01hrqMiJrm1pqZPnFgFAPchShT9ak9JKSsIydLC78Rv8 UsIg== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:list-unsubscribe :list-subscribe:list-id:precedence:references:in-reply-to:message-id :date:subject:cc:to:from:dkim-signature; bh=JDg0owEF3xlOehCDIXIEw25/GVMd5SHRx8SLPbdFUxk=; fh=v+fQpqqloRxheg66y6v5BEIIh4tqlWdyRuynNr5XQWo=; b=vFR5v2C398KoS7R4L/fMo8oClSvmmELAW3W/llF+EBD7P+pM/ucWRms42/56fUo3Zi H95xS1e2Gj74lg9q7kX7/AoDWlDcnTWMFgtuM2a1SnbZA0SHDf/3tImIB8H00F4Rat+x x96ebozL2g9UyvH4mV7gXETAgwQmBAvch++4vQycMuTFgYNv6ulRkZa4KOUNZKxIQZoK PxCP4cBWwdhYNpNAvIkx4hWkaKQ7aloEh5vFWZczBCCxh5fww0YzCjp+fsWkOm+5BVa+ 22gYdMqBc5CrESniZD+H5TRKo1gG4c3lFsnN4NLQPi36nNqFCmsUR+2gtzzm7uU4xG8z NDzg==; dara=google.com ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@bootlin.com header.s=gm1 header.b=PPlYHwQh; arc=pass (i=1 spf=pass spfdomain=bootlin.com dkim=pass dkdomain=bootlin.com dmarc=pass fromdomain=bootlin.com); spf=pass (google.com: domain of linux-kernel+bounces-84165-linux.lists.archive=gmail.com@vger.kernel.org designates 147.75.80.249 as permitted sender) smtp.mailfrom="linux-kernel+bounces-84165-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=bootlin.com Return-Path: Received: from am.mirrors.kernel.org (am.mirrors.kernel.org. [147.75.80.249]) by mx.google.com with ESMTPS id n28-20020a50935c000000b00565b90910b3si1067003eda.308.2024.02.27.15.06.11 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 27 Feb 2024 15:06:11 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel+bounces-84165-linux.lists.archive=gmail.com@vger.kernel.org designates 147.75.80.249 as permitted sender) client-ip=147.75.80.249; Authentication-Results: mx.google.com; dkim=pass header.i=@bootlin.com header.s=gm1 header.b=PPlYHwQh; arc=pass (i=1 spf=pass spfdomain=bootlin.com dkim=pass dkdomain=bootlin.com dmarc=pass fromdomain=bootlin.com); spf=pass (google.com: domain of linux-kernel+bounces-84165-linux.lists.archive=gmail.com@vger.kernel.org designates 147.75.80.249 as permitted sender) smtp.mailfrom="linux-kernel+bounces-84165-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=bootlin.com Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by am.mirrors.kernel.org (Postfix) with ESMTPS id 151641F29D4A for ; Tue, 27 Feb 2024 23:06:11 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 6ADF658206; Tue, 27 Feb 2024 23:05:01 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=bootlin.com header.i=@bootlin.com header.b="PPlYHwQh" Received: from relay5-d.mail.gandi.net (relay5-d.mail.gandi.net [217.70.183.197]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 1DCB758106; Tue, 27 Feb 2024 23:04:57 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=217.70.183.197 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1709075100; cv=none; b=YlLYozk42eG0dVBsKZkxgbfWTVaHHIvont/zAXCIEtZOe5XD/6Ym461FugABNY/dcYZn8ttpZTDgUmoxzhMWTzbnxpst9N0LwVOq97zzpDKPq22tZbE5WZnQtCFZ0Zux0sV5lbV23XWaUjjZ/YeW+Z8cBDQHJptlW8IT5hwg+/Q= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1709075100; c=relaxed/simple; bh=+TeOoQ8/EabvacRrcZs7lP1c51rVOFxgFfe2Z7f9Dyo=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=jXx/rKsPfErbgLWRXISxjwrPwt/D4Fw+LtirxVNgESKOfrzx0gRE1FQyczsF6i3fRePQrdMy2vyu/YWhJJaCzy83R/YCOZCtRHvaQh0dUJArxsLTWB8q5B1+cSiaA6JsJRVjOxPwVC42aZf/qyp6MdP7ja9KakV67PYYdsQ4Lq0= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=bootlin.com; spf=pass smtp.mailfrom=bootlin.com; dkim=pass (2048-bit key) header.d=bootlin.com header.i=@bootlin.com header.b=PPlYHwQh; arc=none smtp.client-ip=217.70.183.197 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=bootlin.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=bootlin.com Received: by mail.gandi.net (Postfix) with ESMTPSA id 0A6F41C0003; Tue, 27 Feb 2024 23:04:55 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bootlin.com; s=gm1; t=1709075096; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=JDg0owEF3xlOehCDIXIEw25/GVMd5SHRx8SLPbdFUxk=; b=PPlYHwQhknBlH6gzirfTHj3elUM7xQH0GVQfaAYNWr7FoeK2m9wi0qWPeCGdyol0Y8YgPI 6r5YyfsLd7nlyJLocw/unOcKlu3X9j/FanTf1N6KCZ8bt4/pG0ZV6TB2nGyRAABaxefekR WK9h8gzHRovivTIWZ/7FDj9uxN1lnWfngkiVZtAIdvfEMLxuf39GT5LjEdbL2G5EWqqUAv Gv9k3XqsDbpr2QO7DWm35/g0zqX9DiLMtwSRAAj2Q/zMYEU1NeMRvt6fsXFzNt7c4yEaFV D3OyIbG/rrjbkKUeIYXhdDpryAPEcZqSyDM80RKxFN1/NCvWN8iaDa4moCzvbg== From: alexandre.belloni@bootlin.com To: Alexandre Belloni Cc: linux-rtc@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH 07/12] rtc: ds1511: remove ds1511_rtc_update_alarm Date: Wed, 28 Feb 2024 00:04:22 +0100 Message-ID: <20240227230431.1837717-7-alexandre.belloni@bootlin.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240227230431.1837717-1-alexandre.belloni@bootlin.com> References: <20240227230431.1837717-1-alexandre.belloni@bootlin.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-GND-Sasl: alexandre.belloni@bootlin.com From: Alexandre Belloni ds1511_rtc_update_alarm is called twice but one of the call is overkill as it only has to enable or disable the alarm instead of updating all the alarm registers. Merge it in its main call site and introduce a new finction to enable or disable the alarm. Signed-off-by: Alexandre Belloni --- drivers/rtc/rtc-ds1511.c | 52 ++++++++++++++++++---------------------- 1 file changed, 23 insertions(+), 29 deletions(-) diff --git a/drivers/rtc/rtc-ds1511.c b/drivers/rtc/rtc-ds1511.c index 4ac8988d4124..b0dfdda2c8fc 100644 --- a/drivers/rtc/rtc-ds1511.c +++ b/drivers/rtc/rtc-ds1511.c @@ -178,35 +178,15 @@ static int ds1511_rtc_read_time(struct device *dev, struct rtc_time *rtc_tm) return 0; } -/* - * write the alarm register settings - * - * we only have the use to interrupt every second, otherwise - * known as the update interrupt, or the interrupt if the whole - * date/hours/mins/secs matches. the ds1511 has many more - * permutations, but the kernel doesn't. - */ -static void ds1511_rtc_update_alarm(struct rtc_plat_data *pdata) +static void ds1511_rtc_alarm_enable(unsigned int enabled) { - unsigned long flags; - - spin_lock_irqsave(&pdata->lock, flags); - rtc_write(pdata->alrm_mday < 0 ? 0x80 : bin2bcd(pdata->alrm_mday) & 0x3f, - DS1511_AM4_DATE); - rtc_write(pdata->alrm_hour < 0 ? 0x80 : bin2bcd(pdata->alrm_hour) & 0x3f, - DS1511_AM3_HOUR); - rtc_write(pdata->alrm_min < 0 ? 0x80 : bin2bcd(pdata->alrm_min) & 0x7f, - DS1511_AM2_MIN); - rtc_write(pdata->alrm_sec < 0 ? 0x80 : bin2bcd(pdata->alrm_sec) & 0x7f, - DS1511_AM1_SEC); - rtc_write(rtc_read(DS1511_CONTROL_B) | (pdata->irqen ? DS1511_TIE : 0), DS1511_CONTROL_B); - rtc_read(DS1511_CONTROL_A); /* clear interrupts */ - spin_unlock_irqrestore(&pdata->lock, flags); + rtc_write(rtc_read(DS1511_CONTROL_B) | (enabled ? DS1511_TIE : 0), DS1511_CONTROL_B); } static int ds1511_rtc_set_alarm(struct device *dev, struct rtc_wkalrm *alrm) { struct rtc_plat_data *pdata = dev_get_drvdata(dev); + unsigned long flags; if (pdata->irq <= 0) return -EINVAL; @@ -218,7 +198,20 @@ static int ds1511_rtc_set_alarm(struct device *dev, struct rtc_wkalrm *alrm) if (alrm->enabled) pdata->irqen |= RTC_AF; - ds1511_rtc_update_alarm(pdata); + spin_lock_irqsave(&pdata->lock, flags); + rtc_write(pdata->alrm_mday < 0 ? 0x80 : bin2bcd(pdata->alrm_mday) & 0x3f, + DS1511_AM4_DATE); + rtc_write(pdata->alrm_hour < 0 ? 0x80 : bin2bcd(pdata->alrm_hour) & 0x3f, + DS1511_AM3_HOUR); + rtc_write(pdata->alrm_min < 0 ? 0x80 : bin2bcd(pdata->alrm_min) & 0x7f, + DS1511_AM2_MIN); + rtc_write(pdata->alrm_sec < 0 ? 0x80 : bin2bcd(pdata->alrm_sec) & 0x7f, + DS1511_AM1_SEC); + ds1511_rtc_alarm_enable(alrm->enabled); + + rtc_read(DS1511_CONTROL_A); /* clear interrupts */ + spin_unlock_irqrestore(&pdata->lock, flags); + return 0; } @@ -258,14 +251,15 @@ static irqreturn_t ds1511_interrupt(int irq, void *dev_id) static int ds1511_rtc_alarm_irq_enable(struct device *dev, unsigned int enabled) { struct rtc_plat_data *pdata = dev_get_drvdata(dev); + unsigned long flags; if (pdata->irq <= 0) return -EINVAL; - if (enabled) - pdata->irqen |= RTC_AF; - else - pdata->irqen &= ~RTC_AF; - ds1511_rtc_update_alarm(pdata); + + spin_lock_irqsave(&pdata->lock, flags); + ds1511_rtc_alarm_enable(enabled); + spin_unlock_irqrestore(&pdata->lock, flags); + return 0; } -- 2.43.0