[PATCH 1/2] i.MX: i2c: fix i2c-fsl for non-OF boards

Alexander Kurz akurz at blala.de
Sat Feb 11 14:31:38 PST 2017


With commit 4ed5b778a56b ("i.MX: i2c: Add Vybrid support") i2c-fsl probe
returns -EINVAL for all non-OF boards.
Since newer planforms, especially vf610 are restricted OF-only it is safe to
assume "fsl,imx21-i2c" if CONFIG_OFDEVICE is not set.

Signed-off-by: Alexander Kurz <akurz at blala.de>
---
 drivers/i2c/busses/i2c-imx.c | 14 ++++++++++----
 1 file changed, 10 insertions(+), 4 deletions(-)

diff --git a/drivers/i2c/busses/i2c-imx.c b/drivers/i2c/busses/i2c-imx.c
index 5677443..4ff4f5c 100644
--- a/drivers/i2c/busses/i2c-imx.c
+++ b/drivers/i2c/busses/i2c-imx.c
@@ -153,6 +153,8 @@ static struct fsl_i2c_clk_pair vf610_i2c_clk_div[] = {
 	{ 3840, 0x3F }, { 4096, 0x7B }, { 5120, 0x7D }, { 6144, 0x7E },
 };
 
+static const struct fsl_i2c_hwdata imx21_i2c_hwdata;
+
 struct fsl_i2c_hwdata {
 	unsigned		regshift;
 	struct fsl_i2c_clk_pair	*clk_div;
@@ -676,10 +678,14 @@ static int __init i2c_fsl_probe(struct device_d *pdev)
 	clk_enable(i2c_fsl->clk);
 #endif
 
-	i2c_fsl->hwdata = of_device_get_match_data(pdev);
-	if (!i2c_fsl->hwdata) {
-		ret = -EINVAL;
-		goto fail;
+	if (IS_ENABLED(CONFIG_OFDEVICE)) {
+		i2c_fsl->hwdata = of_device_get_match_data(pdev);
+		if (!i2c_fsl->hwdata) {
+			ret = -EINVAL;
+			goto fail;
+		}
+	} else {
+		i2c_fsl->hwdata = &imx21_i2c_hwdata;
 	}
 
 	/* Setup i2c_fsl driver structure */
-- 
2.1.4




More information about the barebox mailing list