From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932922AbcFUHZq (ORCPT ); Tue, 21 Jun 2016 03:25:46 -0400 Received: from mail-pf0-f193.google.com ([209.85.192.193]:33545 "EHLO mail-pf0-f193.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753387AbcFUHYY (ORCPT ); Tue, 21 Jun 2016 03:24:24 -0400 From: Andrey Smirnov To: rtc-linux@googlegroups.com Cc: Andrey Smirnov , Alessandro Zummo , Alexandre Belloni , linux-kernel@vger.kernel.org, cphealy@gmail.com Subject: [PATCH v2 05/17] RTC: ds1307: Convert ds1307_can_wakeup_device into a predicate Date: Tue, 21 Jun 2016 00:22:38 -0700 Message-Id: <1466493770-11895-4-git-send-email-andrew.smirnov@gmail.com> X-Mailer: git-send-email 2.5.5 In-Reply-To: <1466493770-11895-1-git-send-email-andrew.smirnov@gmail.com> References: <1466493770-11895-1-git-send-email-andrew.smirnov@gmail.com> Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Convert ds1307_can_wakeup_device in ds1307_probe into a predicate in order to make various chunks of code in that function less connected to each other. Signed-off-by: Andrey Smirnov --- drivers/rtc/rtc-ds1307.c | 35 ++++++++++++++++++----------------- 1 file changed, 18 insertions(+), 17 deletions(-) diff --git a/drivers/rtc/rtc-ds1307.c b/drivers/rtc/rtc-ds1307.c index b21ea5d..98e1f81 100644 --- a/drivers/rtc/rtc-ds1307.c +++ b/drivers/rtc/rtc-ds1307.c @@ -1232,6 +1232,21 @@ static void ds1307_clks_register(struct ds1307 *ds1307) #endif /* CONFIG_COMMON_CLK */ +static bool ds1307_can_wakeup_device(const struct ds1307 *ds1307) +{ + +/* + * For devices with no IRQ directly connected to the SoC, the RTC chip + * can be forced as a wakeup source by stating that explicitly in + * the device's .dts file using the "wakeup-source" boolean property. + * If the "wakeup-source" property is set, don't request an IRQ. + * This will guarantee the 'wakealarm' sysfs entry is available on the device, + * if supported by the RTC. + */ + return of_property_read_bool(ds1307->client->dev.of_node, + "wakeup-source"); +} + static int ds1307_probe(struct i2c_client *client, const struct i2c_device_id *id) { @@ -1241,7 +1256,6 @@ static int ds1307_probe(struct i2c_client *client, struct chip_desc *chip = &chips[id->driver_data]; struct i2c_adapter *adapter = to_i2c_adapter(client->dev.parent); bool want_irq = false; - bool ds1307_can_wakeup_device = false; unsigned char *buf; struct ds1307_platform_data *pdata = dev_get_platdata(&client->dev); irq_handler_t irq_handler = ds1307_irq; @@ -1290,20 +1304,6 @@ static int ds1307_probe(struct i2c_client *client, ds1307->write_block_data = ds1307_write_block_data; } -#ifdef CONFIG_OF -/* - * For devices with no IRQ directly connected to the SoC, the RTC chip - * can be forced as a wakeup source by stating that explicitly in - * the device's .dts file using the "wakeup-source" boolean property. - * If the "wakeup-source" property is set, don't request an IRQ. - * This will guarantee the 'wakealarm' sysfs entry is available on the device, - * if supported by the RTC. - */ - if (of_property_read_bool(client->dev.of_node, "wakeup-source")) { - ds1307_can_wakeup_device = true; - } -#endif - switch (ds1307->type) { case ds_1337: case ds_1339: @@ -1357,7 +1357,7 @@ static int ds1307_probe(struct i2c_client *client, ds1307->regs[0] &= ~(DS1337_BIT_A2IE | DS1337_BIT_A1IE); if (chip->alarm && (ds1307->client->irq > 0 || - ds1307_can_wakeup_device)) + ds1307_can_wakeup_device(ds1307))) want_irq = true; i2c_smbus_write_byte_data(client, DS1337_REG_CONTROL, @@ -1567,7 +1567,8 @@ read_rtc: return PTR_ERR(ds1307->rtc); } - if (ds1307_can_wakeup_device && ds1307->client->irq <= 0) { + if (ds1307_can_wakeup_device(ds1307) && + ds1307->client->irq <= 0) { /* Disable request for an IRQ */ want_irq = false; dev_info(&client->dev, "'wakeup-source' is set, request for an IRQ is disabled!\n"); -- 2.5.5