From: akpm@linux-foundation.org (Andrew Morton)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCHv0 2/3] rtc: Add support for Abracon AB-RTCMC-32.768kHz-B5ZE-S3 I2C RTC chip
Date: Wed, 14 Jan 2015 17:03:43 -0800 [thread overview]
Message-ID: <20150114170343.6f8d807a.akpm@linux-foundation.org> (raw)
In-Reply-To: <20150114165557.d44c5752.akpm@linux-foundation.org>
On Wed, 14 Jan 2015 16:55:57 -0800 Andrew Morton <akpm@linux-foundation.org> wrote:
> Something like this?
Leading to changes in [3/3]. Please have a think about where we should
be calling device_init_wakeup(dev, false) on the error recovery path.
Let me know if I should just drop it all and await a v2...
@@ -655,24 +896,28 @@ static int abb5zes3_probe(struct i2c_cli
if (!i2c_check_functionality(client->adapter, I2C_FUNC_I2C |
I2C_FUNC_SMBUS_BYTE_DATA |
- I2C_FUNC_SMBUS_I2C_BLOCK))
- return -ENODEV;
+ I2C_FUNC_SMBUS_I2C_BLOCK)) {
+ ret = -ENODEV;
+ goto out;
+ }
regmap = devm_regmap_init_i2c(client, &abb5zes3_rtc_regmap_config);
if (IS_ERR(regmap)) {
ret = PTR_ERR(regmap);
dev_err(dev, "%s: regmap allocation failed: %d\n",
__func__, ret);
- return ret;
+ goto out;
}
ret = abb5zes3_i2c_validate_chip(regmap);
if (ret)
- return ret;
+ goto out;
data = devm_kzalloc(dev, sizeof(*data), GFP_KERNEL);
- if (!data)
- return -ENOMEM;
+ if (!data) {
+ ret = -ENOMEM;
+ goto out;
+ }
mutex_init(&data->lock);
data->regmap = regmap;
@@ -680,7 +925,7 @@ static int abb5zes3_probe(struct i2c_cli
ret = abb5zes3_rtc_check_setup(dev);
if (ret)
- return ret;
+ goto out;
if (client->irq > 0) {
ret = devm_request_threaded_irq(dev, client->irq, NULL,
@@ -695,7 +940,7 @@ static int abb5zes3_probe(struct i2c_cli
} else {
dev_err(dev, "%s: irq %d unavailable (%d)\n",
__func__, client->irq, ret);
- return ret;
+ goto out;
}
}
@@ -705,29 +950,23 @@ static int abb5zes3_probe(struct i2c_cli
if (ret) {
dev_err(dev, "%s: unable to register RTC device (%d)\n",
__func__, ret);
- goto err;
+ goto out_deinit_wakeup;
}
- /*
- * AB-B5Z5E only supports a coarse granularity alarm (one minute
- * resolution up to one month) so we cannot support UIE mode
- * using the device's alarm. Note it should be feasible to support
- * such a feature using one of the two timers the device provides.
- */
- data->rtc->uie_unsupported = 1;
-
/* Enable battery low detection interrupt if battery not already low */
if (!data->battery_low && data->irq) {
ret = _abb5zes3_rtc_battery_low_irq_enable(regmap, true);
if (ret) {
dev_err(dev, "%s: enabling battery low interrupt "
"generation failed (%d)\n", __func__, ret);
- goto err;
+ goto out_deinit_wakeup;
}
}
+out:
return ret;
-err:
+
+out_deinit_wakeup:
device_init_wakeup(dev, false);
return ret;
}
_
WARNING: multiple messages have this Message-ID (diff)
From: Andrew Morton <akpm@linux-foundation.org>
To: Arnaud Ebalard <arno@natisbad.org>,
Mark Rutland <mark.rutland@arm.com>,
Alessandro Zummo <a.zummo@towertech.it>,
Peter Huewe <peter.huewe@infineon.com>,
Linus Walleij <linus.walleij@linaro.org>,
Thierry Reding <treding@nvidia.com>,
Mark Brown <broonie@kernel.org>, Arnd Bergmann <arnd@arndb.de>,
Rob Herring <rob.herring@calxeda.com>,
Pawel Moll <pawel.moll@arm.com>,
Stephen Warren <swarren@wwwdotorg.org>,
Ian Campbell <ijc+devicetree@hellion.org.uk>,
Grant Likely <grant.likely@linaro.org>,
devicetree@vger.kernel.org, linux-doc@vger.kernel.org,
Rob Landley <rob@landley.net>,
rtc-linux@googlegroups.com, Jason Cooper <jason@lakedaemon.net>,
Guenter Roeck <linux@roeck-us.net>,
Jason Gunthorpe <jgunthorpe@obsidianresearch.com>,
Kumar Gala <galak@codeaurora.org>,
linux-arm-kernel@lists.infradead.org
Subject: Re: [PATCHv0 2/3] rtc: Add support for Abracon AB-RTCMC-32.768kHz-B5ZE-S3 I2C RTC chip
Date: Wed, 14 Jan 2015 17:03:43 -0800 [thread overview]
Message-ID: <20150114170343.6f8d807a.akpm@linux-foundation.org> (raw)
In-Reply-To: <20150114165557.d44c5752.akpm@linux-foundation.org>
On Wed, 14 Jan 2015 16:55:57 -0800 Andrew Morton <akpm@linux-foundation.org> wrote:
> Something like this?
Leading to changes in [3/3]. Please have a think about where we should
be calling device_init_wakeup(dev, false) on the error recovery path.
Let me know if I should just drop it all and await a v2...
@@ -655,24 +896,28 @@ static int abb5zes3_probe(struct i2c_cli
if (!i2c_check_functionality(client->adapter, I2C_FUNC_I2C |
I2C_FUNC_SMBUS_BYTE_DATA |
- I2C_FUNC_SMBUS_I2C_BLOCK))
- return -ENODEV;
+ I2C_FUNC_SMBUS_I2C_BLOCK)) {
+ ret = -ENODEV;
+ goto out;
+ }
regmap = devm_regmap_init_i2c(client, &abb5zes3_rtc_regmap_config);
if (IS_ERR(regmap)) {
ret = PTR_ERR(regmap);
dev_err(dev, "%s: regmap allocation failed: %d\n",
__func__, ret);
- return ret;
+ goto out;
}
ret = abb5zes3_i2c_validate_chip(regmap);
if (ret)
- return ret;
+ goto out;
data = devm_kzalloc(dev, sizeof(*data), GFP_KERNEL);
- if (!data)
- return -ENOMEM;
+ if (!data) {
+ ret = -ENOMEM;
+ goto out;
+ }
mutex_init(&data->lock);
data->regmap = regmap;
@@ -680,7 +925,7 @@ static int abb5zes3_probe(struct i2c_cli
ret = abb5zes3_rtc_check_setup(dev);
if (ret)
- return ret;
+ goto out;
if (client->irq > 0) {
ret = devm_request_threaded_irq(dev, client->irq, NULL,
@@ -695,7 +940,7 @@ static int abb5zes3_probe(struct i2c_cli
} else {
dev_err(dev, "%s: irq %d unavailable (%d)\n",
__func__, client->irq, ret);
- return ret;
+ goto out;
}
}
@@ -705,29 +950,23 @@ static int abb5zes3_probe(struct i2c_cli
if (ret) {
dev_err(dev, "%s: unable to register RTC device (%d)\n",
__func__, ret);
- goto err;
+ goto out_deinit_wakeup;
}
- /*
- * AB-B5Z5E only supports a coarse granularity alarm (one minute
- * resolution up to one month) so we cannot support UIE mode
- * using the device's alarm. Note it should be feasible to support
- * such a feature using one of the two timers the device provides.
- */
- data->rtc->uie_unsupported = 1;
-
/* Enable battery low detection interrupt if battery not already low */
if (!data->battery_low && data->irq) {
ret = _abb5zes3_rtc_battery_low_irq_enable(regmap, true);
if (ret) {
dev_err(dev, "%s: enabling battery low interrupt "
"generation failed (%d)\n", __func__, ret);
- goto err;
+ goto out_deinit_wakeup;
}
}
+out:
return ret;
-err:
+
+out_deinit_wakeup:
device_init_wakeup(dev, false);
return ret;
}
_
next prev parent reply other threads:[~2015-01-15 1:03 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-01-12 8:16 [PATCHv0 0/3] rtc: Abracon AB-RTCMC-32.768kHz-B5ZE-S3 I2C RTC chip support Arnaud Ebalard
2015-01-12 8:16 ` Arnaud Ebalard
2015-01-12 8:16 ` [PATCHv0 1/3] of: add vendor prefix for Abracon Corporation Arnaud Ebalard
2015-01-12 8:16 ` Arnaud Ebalard
2015-01-12 13:41 ` Rob Herring
2015-01-12 13:41 ` Rob Herring
2015-01-12 17:11 ` Arnaud Ebalard
2015-01-12 17:11 ` Arnaud Ebalard
2015-01-12 8:16 ` [PATCHv0 2/3] rtc: Add support for Abracon AB-RTCMC-32.768kHz-B5ZE-S3 I2C RTC chip Arnaud Ebalard
2015-01-12 8:16 ` Arnaud Ebalard
2015-01-15 0:55 ` Andrew Morton
2015-01-15 0:55 ` Andrew Morton
2015-01-15 1:03 ` Andrew Morton [this message]
2015-01-15 1:03 ` Andrew Morton
2015-01-15 8:02 ` Arnaud Ebalard
2015-01-15 8:02 ` Arnaud Ebalard
2015-01-12 8:16 ` [PATCHv0 3/3] rtc: rtc-ab-b5ze-s3: Add sub-minute alarm support Arnaud Ebalard
2015-01-12 8:16 ` Arnaud Ebalard
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20150114170343.6f8d807a.akpm@linux-foundation.org \
--to=akpm@linux-foundation.org \
--cc=linux-arm-kernel@lists.infradead.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.