From: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
To: "Rafael J . Wysocki" <rjw@rjwysocki.net>,
Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
Jarkko Nikula <jarkko.nikula@linux.intel.com>,
linux-i2c@vger.kernel.org, linux-acpi@vger.kernel.org,
linux-kernel@vger.kernel.org, Lee Jones <lee.jones@linaro.org>,
Mika Westerberg <mika.westerberg@linux.intel.com>,
Kevin Fenzi <kevin@scrye.com>, Arnd Bergmann <arnd@arndb.de>,
Wolfram Sang <wsa@the-dreams.de>
Cc: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Subject: [PATCH v2 16/16] i2c: designware: Convert to use unified device property API
Date: Mon, 30 Nov 2015 17:11:44 +0200 [thread overview]
Message-ID: <1448896304-87928-17-git-send-email-andriy.shevchenko@linux.intel.com> (raw)
In-Reply-To: <1448896304-87928-1-git-send-email-andriy.shevchenko@linux.intel.com>
From: Mika Westerberg <mika.westerberg@linux.intel.com>
With ACPI _DSD (introduced in ACPI v5.1) it is now possible to pass device
configuration information from ACPI in addition to DT. In order to support
this, convert the driver to use the unified device property accessors
instead of DT specific.
Change to ordering a bit so that we first try platform data and if that's
not available look from device properties. ACPI *CNT methods are then used
as last resort to override everything else.
Signed-off-by: Mika Westerberg <mika.westerberg@linux.intel.com>
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Acked-by: Jarkko Nikula <jarkko.nikula@linux.intel.com>
---
drivers/i2c/busses/i2c-designware-platdrv.c | 50 +++++++++++++----------------
1 file changed, 23 insertions(+), 27 deletions(-)
diff --git a/drivers/i2c/busses/i2c-designware-platdrv.c b/drivers/i2c/busses/i2c-designware-platdrv.c
index 809579e..06061b5 100644
--- a/drivers/i2c/busses/i2c-designware-platdrv.c
+++ b/drivers/i2c/busses/i2c-designware-platdrv.c
@@ -36,6 +36,7 @@
#include <linux/platform_device.h>
#include <linux/pm.h>
#include <linux/pm_runtime.h>
+#include <linux/property.h>
#include <linux/io.h>
#include <linux/slab.h>
#include <linux/acpi.h>
@@ -129,10 +130,10 @@ static inline int dw_i2c_acpi_configure(struct platform_device *pdev)
static int dw_i2c_plat_probe(struct platform_device *pdev)
{
+ struct dw_i2c_platform_data *pdata = dev_get_platdata(&pdev->dev);
struct dw_i2c_dev *dev;
struct i2c_adapter *adap;
struct resource *mem;
- struct dw_i2c_platform_data *pdata;
int irq, r;
u32 clk_freq, ht = 0;
@@ -156,33 +157,28 @@ static int dw_i2c_plat_probe(struct platform_device *pdev)
/* fast mode by default because of legacy reasons */
clk_freq = 400000;
- if (has_acpi_companion(&pdev->dev)) {
- dw_i2c_acpi_configure(pdev);
- } else if (pdev->dev.of_node) {
- of_property_read_u32(pdev->dev.of_node,
- "i2c-sda-hold-time-ns", &ht);
-
- of_property_read_u32(pdev->dev.of_node,
- "i2c-sda-falling-time-ns",
- &dev->sda_falling_time);
- of_property_read_u32(pdev->dev.of_node,
- "i2c-scl-falling-time-ns",
- &dev->scl_falling_time);
-
- of_property_read_u32(pdev->dev.of_node, "clock-frequency",
- &clk_freq);
-
- /* Only standard mode at 100kHz and fast mode at 400kHz
- * are supported.
- */
- if (clk_freq != 100000 && clk_freq != 400000) {
- dev_err(&pdev->dev, "Only 100kHz and 400kHz supported");
- return -EINVAL;
- }
+ if (pdata) {
+ clk_freq = pdata->i2c_scl_freq;
} else {
- pdata = dev_get_platdata(&pdev->dev);
- if (pdata)
- clk_freq = pdata->i2c_scl_freq;
+ device_property_read_u32(&pdev->dev, "i2c-sda-hold-time-ns",
+ &ht);
+ device_property_read_u32(&pdev->dev, "i2c-sda-falling-time-ns",
+ &dev->sda_falling_time);
+ device_property_read_u32(&pdev->dev, "i2c-scl-falling-time-ns",
+ &dev->scl_falling_time);
+ device_property_read_u32(&pdev->dev, "clock-frequency",
+ &clk_freq);
+ }
+
+ if (has_acpi_companion(&pdev->dev))
+ dw_i2c_acpi_configure(pdev);
+
+ /*
+ * Only standard mode at 100kHz and fast mode at 400kHz are supported.
+ */
+ if (clk_freq != 100000 && clk_freq != 400000) {
+ dev_err(&pdev->dev, "Only 100kHz and 400kHz supported");
+ return -EINVAL;
}
r = i2c_dw_eval_lock_support(dev);
--
2.6.2
next prev parent reply other threads:[~2015-11-30 15:11 UTC|newest]
Thread overview: 38+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-11-30 15:11 [PATCH v2 00/16] intel-lpss: support non-ACPI platforms Andy Shevchenko
2015-11-30 15:11 ` [PATCH v2 01/16] device property: always check for fwnode type Andy Shevchenko
2015-11-30 15:11 ` [PATCH v2 02/16] device property: rename helper functions Andy Shevchenko
2015-11-30 15:11 ` [PATCH v2 03/16] device property: refactor built-in properties support Andy Shevchenko
2015-11-30 15:11 ` [PATCH v2 04/16] device property: keep single value inplace Andy Shevchenko
2015-11-30 15:11 ` [PATCH v2 05/16] device property: helper macros for property entry creation Andy Shevchenko
2015-11-30 15:11 ` [PATCH v2 06/16] device property: improve readability of macros Andy Shevchenko
2015-11-30 15:11 ` [PATCH v2 07/16] device property: return -EINVAL when property isn't found in ACPI Andy Shevchenko
2015-11-30 15:11 ` [PATCH v2 08/16] device property: Fallback to secondary fwnode if primary misses the property Andy Shevchenko
2015-11-30 15:11 ` [PATCH v2 09/16] device property: Take a copy of the property set Andy Shevchenko
2015-11-30 15:11 ` [PATCH v2 10/16] driver core: platform: Add support for built-in device properties Andy Shevchenko
2015-11-30 15:11 ` [PATCH v2 11/16] driver core: Do not overwrite secondary fwnode with NULL if it is set Andy Shevchenko
2015-11-30 15:11 ` [PATCH v2 12/16] mfd: core: propagate device properties to sub devices drivers Andy Shevchenko
2015-11-30 15:11 ` [PATCH v2 13/16] mfd: intel-lpss: Add support for passing device properties Andy Shevchenko
2015-11-30 15:11 ` [PATCH v2 14/16] mfd: intel-lpss: Pass SDA hold time to I2C host controller driver Andy Shevchenko
2016-02-08 10:09 ` Wolfram Sang
2016-02-08 10:29 ` Mika Westerberg
2016-02-08 10:45 ` Andy Shevchenko
2016-02-10 16:53 ` Lee Jones
2015-11-30 15:11 ` [PATCH v2 15/16] mfd: intel-lpss: Pass HSUART configuration via properties Andy Shevchenko
2015-11-30 15:11 ` Andy Shevchenko [this message]
2015-11-30 19:58 ` [PATCH v2 16/16] i2c: designware: Convert to use unified device property API Wolfram Sang
2015-12-01 9:08 ` Mika Westerberg
2015-12-01 10:33 ` Andy Shevchenko
2015-12-02 1:28 ` Rafael J. Wysocki
2015-12-02 9:23 ` Andy Shevchenko
2015-12-02 9:33 ` Mika Westerberg
2015-12-02 9:53 ` Wolfram Sang
2015-12-07 1:44 ` [PATCH v2 00/16] intel-lpss: support non-ACPI platforms Rafael J. Wysocki
2016-01-05 17:57 ` Laura Abbott
2016-01-05 23:59 ` Rafael J. Wysocki
2016-01-06 16:19 ` Laura Abbott
2016-01-07 8:43 ` Mika Westerberg
2016-01-08 0:03 ` Rafael J. Wysocki
2016-01-08 17:08 ` Laura Abbott
2016-01-08 19:22 ` Hans de Goede
2016-01-11 16:33 ` Laura Abbott
2016-01-11 16:47 ` Benjamin Tissoires
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=1448896304-87928-17-git-send-email-andriy.shevchenko@linux.intel.com \
--to=andriy.shevchenko@linux.intel.com \
--cc=arnd@arndb.de \
--cc=gregkh@linuxfoundation.org \
--cc=jarkko.nikula@linux.intel.com \
--cc=kevin@scrye.com \
--cc=lee.jones@linaro.org \
--cc=linux-acpi@vger.kernel.org \
--cc=linux-i2c@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mika.westerberg@linux.intel.com \
--cc=rjw@rjwysocki.net \
--cc=wsa@the-dreams.de \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).