Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1279988

[PATCH v2 16/16] i2c: designware: Convert to use unified device property API

From Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Newsgroups linux.kernel
Subject [PATCH v2 16/16] i2c: designware: Convert to use unified device property API
Date 2015-11-30 16:20 +0100
Message-ID <qAypd-5id-55@gated-at.bofh.it> (permalink)
References <qAypb-5id-3@gated-at.bofh.it>
Organization linux.* mail to news gateway

Show all headers | View raw


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

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Back to linux.kernel | Previous | NextPrevious in thread | Next in thread | Find similar | Unroll thread


Thread

[PATCH v2 00/16] intel-lpss: support non-ACPI platforms Andy Shevchenko <andriy.shevchenko@linux.intel.com> - 2015-11-30 16:20 +0100
  [PATCH v2 11/16] driver core: Do not overwrite secondary fwnode with NULL if it is set Andy Shevchenko <andriy.shevchenko@linux.intel.com> - 2015-11-30 16:20 +0100
  [PATCH v2 03/16] device property: refactor built-in properties support Andy Shevchenko <andriy.shevchenko@linux.intel.com> - 2015-11-30 16:20 +0100
  [PATCH v2 12/16] mfd: core: propagate device properties to sub devices drivers Andy Shevchenko <andriy.shevchenko@linux.intel.com> - 2015-11-30 16:20 +0100
  [PATCH v2 01/16] device property: always check for fwnode type Andy Shevchenko <andriy.shevchenko@linux.intel.com> - 2015-11-30 16:20 +0100
  [PATCH v2 16/16] i2c: designware: Convert to use unified device property API Andy Shevchenko <andriy.shevchenko@linux.intel.com> - 2015-11-30 16:20 +0100
    Re: [PATCH v2 16/16] i2c: designware: Convert to use unified device  property API Wolfram Sang <wsa@the-dreams.de> - 2015-11-30 21:00 +0100
      Re: [PATCH v2 16/16] i2c: designware: Convert to use unified device  property API Mika Westerberg <mika.westerberg@linux.intel.com> - 2015-12-01 10:10 +0100
      Re: [PATCH v2 16/16] i2c: designware: Convert to use unified device  property API Andy Shevchenko <andriy.shevchenko@linux.intel.com> - 2015-12-01 11:40 +0100
        Re: [PATCH v2 16/16] i2c: designware: Convert to use unified device property API "Rafael J. Wysocki" <rjw@rjwysocki.net> - 2015-12-02 02:00 +0100
          Re: [PATCH v2 16/16] i2c: designware: Convert to use unified device  property API Andy Shevchenko <andriy.shevchenko@linux.intel.com> - 2015-12-02 10:30 +0100
            Re: [PATCH v2 16/16] i2c: designware: Convert to use unified device  property API Mika Westerberg <mika.westerberg@linux.intel.com> - 2015-12-02 10:40 +0100
              Re: [PATCH v2 16/16] i2c: designware: Convert to use unified device  property API Wolfram Sang <wsa@the-dreams.de> - 2015-12-02 11:00 +0100
  [PATCH v2 14/16] mfd: intel-lpss: Pass SDA hold time to I2C host controller driver Andy Shevchenko <andriy.shevchenko@linux.intel.com> - 2015-11-30 16:20 +0100
  [PATCH v2 15/16] mfd: intel-lpss: Pass HSUART configuration via properties Andy Shevchenko <andriy.shevchenko@linux.intel.com> - 2015-11-30 16:20 +0100
  [PATCH v2 13/16] mfd: intel-lpss: Add support for passing device properties Andy Shevchenko <andriy.shevchenko@linux.intel.com> - 2015-11-30 16:20 +0100
  Re: [PATCH v2 00/16] intel-lpss: support non-ACPI platforms "Rafael J. Wysocki" <rjw@rjwysocki.net> - 2015-12-07 02:20 +0100

csiph-web