From nobody Tue Apr 7 19:55:53 2026 Received: from mail.hugovil.com (mail.hugovil.com [162.243.120.170]) (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 4EF242FE042; Wed, 11 Mar 2026 20:02:42 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=162.243.120.170 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773259364; cv=none; b=CAlgmjreq4pdv+xwUY0nqOJ4LTwyjEkb3Q4ja/fMF05/oVrroOVJA7jko/BEPakXiT024iVtG/eYNsAY6j9kJNuJwZNtPnIgbMJft6Rpm0M6scx60JCQayBS2YWhZJFLK/QZBgTYl9IeqHR2MSFgbqvqxr014atBM/IaTsMfc9s= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773259364; c=relaxed/simple; bh=8CnhxjSzp9LdbnH9y53CrfmRgQmBlg8BL6peyKqpyk4=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=OBIhbBdtRUNSzW+morRzJSb7jZRvjPRhCuCldZD0mGbbt1bW2Cl32CCS4TgyrWNcTyCvkCy2idA7/w+ghglVzjXasHqyhwRxaYJz0jZt8O2cuB9MaAL9HYm5+V357mpTvBiCDrlltsLfCzBWrsOByHiME9ZOO4zWIT14zREqjds= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=hugovil.com; spf=pass smtp.mailfrom=hugovil.com; dkim=fail (0-bit key) header.d=hugovil.com header.i=@hugovil.com header.b=XHfu4xK7 reason="key not found in DNS"; arc=none smtp.client-ip=162.243.120.170 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=hugovil.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=hugovil.com Authentication-Results: smtp.subspace.kernel.org; dkim=fail reason="key not found in DNS" (0-bit key) header.d=hugovil.com header.i=@hugovil.com header.b="XHfu4xK7" DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=hugovil.com ; s=default; h=Content-Transfer-Encoding:MIME-Version:Message-ID:Date:Subject :Cc:To:From:subject:date:message-id:reply-to; bh=iUFH++oaMOJVwTLr1ChwBt8nUq8dxbnmpAJpiYS+VU0=; b=XHfu4xK7/pV4nNHphm+jwjOb8n W/ahywTAmCsEOievizM9ArxQiV1dqjyG9+iHcJ7o1q5mrJQpLLJr5xsK54LZc3GUdwNFhPPDDtLv3 yPjHovFhlyiKN0kakFOjpgRQEOTrwrHahbjoZqVewh+pyDN2wAmWzIReIe6ONZcPiFrs=; Received: from modemcable168.174-80-70.mc.videotron.ca ([70.80.174.168] helo=pettiford.lan) by mail.hugovil.com with esmtpa (Exim 4.98.2) (envelope-from ) id 1w0PlR-000000000Lu-0N6p; Wed, 11 Mar 2026 16:02:41 -0400 From: Hugo Villeneuve To: alexandre.belloni@bootlin.com Cc: linux-rtc@vger.kernel.org, linux-kernel@vger.kernel.org, hugo@hugovil.com, bruno.thomsen@gmail.com, giampiero@sferalabs.cc, p.rosenberger@kunbus.com, antonio@amsobr.com, Hugo Villeneuve Subject: [PATCH 1/4] rtc: pcf2127: remove redundant break statement in switch-case Date: Wed, 11 Mar 2026 16:02:27 -0400 Message-ID: <20260311200237.3531981-2-hugo@hugovil.com> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260311200237.3531981-1-hugo@hugovil.com> References: <20260311200237.3531981-1-hugo@hugovil.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Spam_score: -1.0 X-Spam_bar: - Content-Type: text/plain; charset="utf-8" From: Hugo Villeneuve Remove unreachable break statement after return. Signed-off-by: Hugo Villeneuve --- drivers/rtc/rtc-pcf2127.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/drivers/rtc/rtc-pcf2127.c b/drivers/rtc/rtc-pcf2127.c index bb4fe81d3d62c..e2e9746027348 100644 --- a/drivers/rtc/rtc-pcf2127.c +++ b/drivers/rtc/rtc-pcf2127.c @@ -404,8 +404,6 @@ static int pcf2127_param_set(struct device *dev, struct= rtc_param *param) PCF2127_CTRL3_PM, FIELD_PREP(PCF2127_CTRL3_PM, mode + value)); =20 - break; - default: return -EINVAL; } --=20 2.47.3 From nobody Tue Apr 7 19:55:53 2026 Received: from mail.hugovil.com (mail.hugovil.com [162.243.120.170]) (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 49E6433122D; Wed, 11 Mar 2026 20:02:44 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=162.243.120.170 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773259366; cv=none; b=j5uijiPnjbLw9hWSCvpOK3ohuFqlnoyb7xrziST2MyCYbHLcCuO7dGRHC26LQV9UvvQPC12mALGShAGwD9CLkNN0jfnT7tBSeo3V2SIeu3JQ0e4ucIFVk5gltN7ekTLyOhiJzheo7x7bYYhTTnlDm8TBeypwC+G2fdVQXgzRy9U= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773259366; c=relaxed/simple; bh=i6c3mDCRRAjDlXJe0nhjFm58gq3hSdjpXNhPcl7vufw=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=H3MMGl4c6JL/c1EpEW7f5Gs1P3C7icE9dBBfosCgQ/nRZK4Fn4Vgw7+UbeiQpS0SZwItWa72PVq2NTaNmTHLN/DRxcOdsJLvV0hQf11w3mEXep4eze22C/d8BAwJYlymE8QB7HGPDV23TYcmBVVpr9nY2O8TvlRPpaP+isciU8w= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=hugovil.com; spf=pass smtp.mailfrom=hugovil.com; dkim=fail (0-bit key) header.d=hugovil.com header.i=@hugovil.com header.b=rk4/0bnb reason="key not found in DNS"; arc=none smtp.client-ip=162.243.120.170 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=hugovil.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=hugovil.com Authentication-Results: smtp.subspace.kernel.org; dkim=fail reason="key not found in DNS" (0-bit key) header.d=hugovil.com header.i=@hugovil.com header.b="rk4/0bnb" DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=hugovil.com ; s=default; h=Content-Transfer-Encoding:MIME-Version:Message-ID:Date:Subject :Cc:To:From:subject:date:message-id:reply-to; bh=kH/fXf9SndV/fPlnXEWo7nT5oBnL6RleSNAFNGbN6cA=; b=rk4/0bnb2p+TWi5PVDFLCbyX7q aiSbKa0JazaVAypeyHmla59JiDvtPPFDlkutq4TPulSed4suvCPZoypukbvuVLl1SnqePzEgVDjH0 NDtM+/l/3tKxcF2izH9FH5FZKuxbh8lSlGqKW98Bgc2jS49r9NwOcxvAjH/WWOkcf6M4=; Received: from modemcable168.174-80-70.mc.videotron.ca ([70.80.174.168] helo=pettiford.lan) by mail.hugovil.com with esmtpa (Exim 4.98.2) (envelope-from ) id 1w0PlS-000000000Lu-15aP; Wed, 11 Mar 2026 16:02:42 -0400 From: Hugo Villeneuve To: alexandre.belloni@bootlin.com Cc: linux-rtc@vger.kernel.org, linux-kernel@vger.kernel.org, hugo@hugovil.com, bruno.thomsen@gmail.com, giampiero@sferalabs.cc, p.rosenberger@kunbus.com, antonio@amsobr.com, Hugo Villeneuve Subject: [PATCH 2/4] rtc: pcf2127: add pcf2127_pwrmng_get/set Date: Wed, 11 Mar 2026 16:02:28 -0400 Message-ID: <20260311200237.3531981-3-hugo@hugovil.com> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260311200237.3531981-1-hugo@hugovil.com> References: <20260311200237.3531981-1-hugo@hugovil.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Spam_score: -1.0 X-Spam_bar: - Content-Type: text/plain; charset="utf-8" From: Hugo Villeneuve Add common functions to get/set the pwrmng field in the CTRL3 register, used by pcf2127_param_get() and pcf2127_param_set(). Signed-off-by: Hugo Villeneuve --- These functions will also be used in the following patch to add battery low detection. --- drivers/rtc/rtc-pcf2127.c | 42 +++++++++++++++++++++++++++------------ 1 file changed, 29 insertions(+), 13 deletions(-) diff --git a/drivers/rtc/rtc-pcf2127.c b/drivers/rtc/rtc-pcf2127.c index e2e9746027348..0605295026564 100644 --- a/drivers/rtc/rtc-pcf2127.c +++ b/drivers/rtc/rtc-pcf2127.c @@ -213,6 +213,30 @@ struct pcf2127 { bool ts_valid[PCF2127_MAX_TS_SUPPORTED]; /* Timestamp valid indication. = */ }; =20 +static int pcf2127_pwrmng_get(struct device *dev, u8 *pwrmng) +{ + struct pcf2127 *pcf2127 =3D dev_get_drvdata(dev); + u32 value; + int ret; + + ret =3D regmap_read(pcf2127->regmap, PCF2127_REG_CTRL3, &value); + if (ret < 0) + return ret; + + *pwrmng =3D FIELD_GET(PCF2127_CTRL3_PM, value); + + return 0; +} + +static int pcf2127_pwrmng_set(struct device *dev, u8 pwrmng) +{ + struct pcf2127 *pcf2127 =3D dev_get_drvdata(dev); + + return regmap_update_bits(pcf2127->regmap, PCF2127_REG_CTRL3, + PCF2127_CTRL3_PM, + FIELD_PREP(PCF2127_CTRL3_PM, pwrmng)); +} + /* * In the routines that deal directly with the pcf2127 hardware, we use * rtc_time -- month 0-11, hour 0-23, yr =3D calendar year-epoch. @@ -337,18 +361,15 @@ static int pcf2127_rtc_set_time(struct device *dev, s= truct rtc_time *tm) =20 static int pcf2127_param_get(struct device *dev, struct rtc_param *param) { - struct pcf2127 *pcf2127 =3D dev_get_drvdata(dev); - u32 value; + u8 value; int ret; =20 switch (param->param) { case RTC_PARAM_BACKUP_SWITCH_MODE: - ret =3D regmap_read(pcf2127->regmap, PCF2127_REG_CTRL3, &value); + ret =3D pcf2127_pwrmng_get(dev, &value); if (ret < 0) return ret; =20 - value =3D FIELD_GET(PCF2127_CTRL3_PM, value); - if (value < 0x3) param->uvalue =3D RTC_BSM_LEVEL; else if (value < 0x6) @@ -367,19 +388,16 @@ static int pcf2127_param_get(struct device *dev, stru= ct rtc_param *param) =20 static int pcf2127_param_set(struct device *dev, struct rtc_param *param) { - struct pcf2127 *pcf2127 =3D dev_get_drvdata(dev); u8 mode =3D 0; - u32 value; + u8 value; int ret; =20 switch (param->param) { case RTC_PARAM_BACKUP_SWITCH_MODE: - ret =3D regmap_read(pcf2127->regmap, PCF2127_REG_CTRL3, &value); + ret =3D pcf2127_pwrmng_get(dev, &value); if (ret < 0) return ret; =20 - value =3D FIELD_GET(PCF2127_CTRL3_PM, value); - if (value > 5) value -=3D 5; else if (value > 2) @@ -400,9 +418,7 @@ static int pcf2127_param_set(struct device *dev, struct= rtc_param *param) return -EINVAL; } =20 - return regmap_update_bits(pcf2127->regmap, PCF2127_REG_CTRL3, - PCF2127_CTRL3_PM, - FIELD_PREP(PCF2127_CTRL3_PM, mode + value)); + return pcf2127_pwrmng_set(dev, mode + value); =20 default: return -EINVAL; --=20 2.47.3 From nobody Tue Apr 7 19:55:53 2026 Received: from mail.hugovil.com (mail.hugovil.com [162.243.120.170]) (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 8A13F383C86; Wed, 11 Mar 2026 20:02:44 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=162.243.120.170 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773259366; cv=none; b=rfBGNsLAlJ6ECz96hGrpDqqUKvRk39MpjAZ0IDaWnzsAN6DvNParFlbpzKgXLjXbiF6K/zbEOGLPlRwbC4tEo9Nvdd0nny4OibqIbBu83JjqFZeyrNckdGBbIAlrLvv76Fll/WiC/6veRAUWIQ0sAENsq0GuNpMTvXojmjt3b8E= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773259366; c=relaxed/simple; bh=zPnjoXw08YMNNV3/AEn/g4Vdd0XKRiOaNUdFYSxNwg4=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=LE2GEe8v/Hx7YKIIHWZ3AgCB6eqywQY5Rqsx6EeqCvXdQqjI7lgXpyRyuzt3NiV07gXAjW+dCkmkz6PRP+CXYwt5ZTPpsn45uEs/Yc2/34ogAIbdkrb0Y7W790MZ+g37/0N9XVkTH1F7ffMp8Z6SXtDji5W/NGD453MwQM9zLPI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=hugovil.com; spf=pass smtp.mailfrom=hugovil.com; dkim=fail (0-bit key) header.d=hugovil.com header.i=@hugovil.com header.b=s+DqyYLd reason="key not found in DNS"; arc=none smtp.client-ip=162.243.120.170 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=hugovil.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=hugovil.com Authentication-Results: smtp.subspace.kernel.org; dkim=fail reason="key not found in DNS" (0-bit key) header.d=hugovil.com header.i=@hugovil.com header.b="s+DqyYLd" DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=hugovil.com ; s=default; h=Content-Transfer-Encoding:MIME-Version:Message-ID:Date:Subject :Cc:To:From:subject:date:message-id:reply-to; bh=990Tn+4G4Zbb0Uydm1+sIapSOYaCX24wog9+GqUb5Qc=; b=s+DqyYLdqx/hp0yony+PidpmDj xP2yRZqR0RJ7rMU1w6T9lQXD4it2sfPEKNFYTa/TrY+mHhWbRI1r+OhbG0N0chsFQHqxeiswNoG92 IRqzRkNvA13VFeZiYYLqS6DhvJkWEFlElQIu8gPYPIYpQnnaOfBr3134gpBLyXCEk0D0=; Received: from modemcable168.174-80-70.mc.videotron.ca ([70.80.174.168] helo=pettiford.lan) by mail.hugovil.com with esmtpa (Exim 4.98.2) (envelope-from ) id 1w0PlT-000000000Lu-1Myy; Wed, 11 Mar 2026 16:02:43 -0400 From: Hugo Villeneuve To: alexandre.belloni@bootlin.com Cc: linux-rtc@vger.kernel.org, linux-kernel@vger.kernel.org, hugo@hugovil.com, bruno.thomsen@gmail.com, giampiero@sferalabs.cc, p.rosenberger@kunbus.com, antonio@amsobr.com, Hugo Villeneuve Subject: [PATCH 3/4] rtc: add battery low voltage detection feature Date: Wed, 11 Mar 2026 16:02:29 -0400 Message-ID: <20260311200237.3531981-4-hugo@hugovil.com> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260311200237.3531981-1-hugo@hugovil.com> References: <20260311200237.3531981-1-hugo@hugovil.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Spam_score: -1.0 X-Spam_bar: - Content-Type: text/plain; charset="utf-8" From: Hugo Villeneuve Some RTCs have a battery low voltage detection function. Add new feature so that it can be enabled, disabled or queried at runtime. Signed-off-by: Hugo Villeneuve --- include/uapi/linux/rtc.h | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/include/uapi/linux/rtc.h b/include/uapi/linux/rtc.h index 97aca4503a6a3..596eec119bb3a 100644 --- a/include/uapi/linux/rtc.h +++ b/include/uapi/linux/rtc.h @@ -134,18 +134,23 @@ struct rtc_param { #define RTC_FEATURE_CORRECTION 5 #define RTC_FEATURE_BACKUP_SWITCH_MODE 6 #define RTC_FEATURE_ALARM_WAKEUP_ONLY 7 -#define RTC_FEATURE_CNT 8 +#define RTC_FEATURE_BATTERY_LOW_DETECT 8 +#define RTC_FEATURE_CNT 9 =20 /* parameter list */ #define RTC_PARAM_FEATURES 0 #define RTC_PARAM_CORRECTION 1 #define RTC_PARAM_BACKUP_SWITCH_MODE 2 +#define RTC_PARAM_BATTERY_LOW_DETECT 3 =20 #define RTC_BSM_DISABLED 0 #define RTC_BSM_DIRECT 1 #define RTC_BSM_LEVEL 2 #define RTC_BSM_STANDBY 3 =20 +#define RTC_BATTERY_LOW_DETECT_DISABLED 0 +#define RTC_BATTERY_LOW_DETECT_ENABLED 1 + #define RTC_MAX_FREQ 8192 =20 =20 --=20 2.47.3 From nobody Tue Apr 7 19:55:53 2026 Received: from mail.hugovil.com (mail.hugovil.com [162.243.120.170]) (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 C688E383C65; Wed, 11 Mar 2026 20:02:45 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=162.243.120.170 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773259367; cv=none; b=qsdSe05Ay+lKr9XQFHSMybAuJy5MQKZf9OW99JQOBpcfjgGLHTR1mqhg5fMVI4bt9Pru/7EDZ7JQ2UQzjY9a8smTfUusHZ/5QTKo9lLujFeioxWVFU5s1R4FvDbIhZuOIDxEV1LgwRzV9CjVea+LZyAOO8xxnv4+W+MynXBzV3Y= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773259367; c=relaxed/simple; bh=+oyOOuubtL4cIX70d0LAvj0kGjY4txSxUdqc6gVOyXo=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=e+LKnKHu3tblHy47LluFJK3zV6lYyj/ZUsvqu80H1/GI4VNpuQnApfyhY89eqxs8Gl3rFnwi1IoH4ObA3gUoLFmolmJCiuYWs4K4p4cSe58FFXUYs5OFYJbwEBwn1dpi4y6DYLE/QsiMwuq0moeXTQcit6i9JiIkC3lRanta/Zc= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=hugovil.com; spf=pass smtp.mailfrom=hugovil.com; dkim=fail (0-bit key) header.d=hugovil.com header.i=@hugovil.com header.b=CRU0b1h1 reason="key not found in DNS"; arc=none smtp.client-ip=162.243.120.170 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=hugovil.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=hugovil.com Authentication-Results: smtp.subspace.kernel.org; dkim=fail reason="key not found in DNS" (0-bit key) header.d=hugovil.com header.i=@hugovil.com header.b="CRU0b1h1" DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=hugovil.com ; s=default; h=Content-Transfer-Encoding:MIME-Version:Message-ID:Date:Subject :Cc:To:From:subject:date:message-id:reply-to; bh=RvsHrnN6d5fqKPKo6DShPnzp5ySUgxQwHxzhyFA5Rv8=; b=CRU0b1h15fpnnWL+1qkErhNbDe VVpqRlZsezkbhNo3bKR80iJtijAg484oxOmKJ9SjF9kgRIvFRg6gkKUDh/I/6irVk5gCYCcA4yK/o iVHNusG6fpWRBwXZDDmRszX0S+NaiY9TCJl7HaaYHZhWyyWfDQ1RYN8KIrbq3ypNQL40=; Received: from modemcable168.174-80-70.mc.videotron.ca ([70.80.174.168] helo=pettiford.lan) by mail.hugovil.com with esmtpa (Exim 4.98.2) (envelope-from ) id 1w0PlU-000000000Lu-2ZTU; Wed, 11 Mar 2026 16:02:44 -0400 From: Hugo Villeneuve To: alexandre.belloni@bootlin.com Cc: linux-rtc@vger.kernel.org, linux-kernel@vger.kernel.org, hugo@hugovil.com, bruno.thomsen@gmail.com, giampiero@sferalabs.cc, p.rosenberger@kunbus.com, antonio@amsobr.com, Hugo Villeneuve Subject: [PATCH 4/4] rtc: pcf2127: support battery low voltage detection function Date: Wed, 11 Mar 2026 16:02:30 -0400 Message-ID: <20260311200237.3531981-5-hugo@hugovil.com> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260311200237.3531981-1-hugo@hugovil.com> References: <20260311200237.3531981-1-hugo@hugovil.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Spam_score: -1.0 X-Spam_bar: - Content-Type: text/plain; charset="utf-8" From: Hugo Villeneuve Add support for parameter RTC_PARAM_BATTERY_LOW_DETECT in RTC_PARAM_SET ioctl to enable/disable/query battery low voltage detection. This is especially relevant on the pcf2131 where this function is disabled by default, contrary to the pcf2127. Signed-off-by: Hugo Villeneuve --- drivers/rtc/rtc-pcf2127.c | 60 ++++++++++++++++++++++++++++++++------- 1 file changed, 50 insertions(+), 10 deletions(-) diff --git a/drivers/rtc/rtc-pcf2127.c b/drivers/rtc/rtc-pcf2127.c index 0605295026564..05b08867ffcb3 100644 --- a/drivers/rtc/rtc-pcf2127.c +++ b/drivers/rtc/rtc-pcf2127.c @@ -364,12 +364,12 @@ static int pcf2127_param_get(struct device *dev, stru= ct rtc_param *param) u8 value; int ret; =20 + ret =3D pcf2127_pwrmng_get(dev, &value); + if (ret < 0) + return ret; + switch (param->param) { case RTC_PARAM_BACKUP_SWITCH_MODE: - ret =3D pcf2127_pwrmng_get(dev, &value); - if (ret < 0) - return ret; - if (value < 0x3) param->uvalue =3D RTC_BSM_LEVEL; else if (value < 0x6) @@ -379,6 +379,14 @@ static int pcf2127_param_get(struct device *dev, struc= t rtc_param *param) =20 break; =20 + case RTC_PARAM_BATTERY_LOW_DETECT: + if (value =3D=3D 0x0 || value =3D=3D 0x3) + param->uvalue =3D RTC_BATTERY_LOW_DETECT_ENABLED; + else + param->uvalue =3D RTC_BATTERY_LOW_DETECT_DISABLED; + + break; + default: return -EINVAL; } @@ -392,12 +400,12 @@ static int pcf2127_param_set(struct device *dev, stru= ct rtc_param *param) u8 value; int ret; =20 + ret =3D pcf2127_pwrmng_get(dev, &value); + if (ret < 0) + return ret; + switch (param->param) { case RTC_PARAM_BACKUP_SWITCH_MODE: - ret =3D pcf2127_pwrmng_get(dev, &value); - if (ret < 0) - return ret; - if (value > 5) value -=3D 5; else if (value > 2) @@ -418,13 +426,45 @@ static int pcf2127_param_set(struct device *dev, stru= ct rtc_param *param) return -EINVAL; } =20 - return pcf2127_pwrmng_set(dev, mode + value); + break; + + case RTC_PARAM_BATTERY_LOW_DETECT: + if (value > 5) { + value -=3D 5; + mode =3D 5; + } else if (value > 2) { + value -=3D 3; + mode =3D 3; + } + + switch (param->uvalue) { + case RTC_BATTERY_LOW_DETECT_DISABLED: + if (mode !=3D 5) + if (value =3D=3D 0) + value =3D 1; + + break; + case RTC_BATTERY_LOW_DETECT_ENABLED: + if (mode !=3D 5) + value =3D 0; /* Enable battery low detection. */ + else + return -EINVAL; /* + * battery low detection can't be enabled if + * battery switch over is disabled. + */ + break; + + default: + return -EINVAL; + } + + break; =20 default: return -EINVAL; } =20 - return 0; + return pcf2127_pwrmng_set(dev, mode + value); } =20 static int pcf2127_rtc_ioctl(struct device *dev, --=20 2.47.3