All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/4] Better support for ACPI in smiapp
@ 2017-08-29 12:41 Sakari Ailus
  2017-08-29 12:41 ` [PATCH 1/4] smiapp: Fix error handling in power on sequence Sakari Ailus
                   ` (3 more replies)
  0 siblings, 4 replies; 8+ messages in thread
From: Sakari Ailus @ 2017-08-29 12:41 UTC (permalink / raw)
  To: linux-media

Hi,

The few patches here fix a bug (power sequence error handling) and change
clock handling in a way that allow using the driver in systems without
explicit clock control, e.g. ACPI.

Sakari Ailus (4):
  smiapp: Fix error handling in power on sequence
  smiapp: Verify clock frequency after setting it, prevent changing it
  smiapp: Get clock rate if it's not available through DT
  smiapp: Make clock control optional

 drivers/media/i2c/smiapp/smiapp-core.c | 50 ++++++++++++++++++++++++++--------
 1 file changed, 38 insertions(+), 12 deletions(-)

-- 
2.11.0

^ permalink raw reply	[flat|nested] 8+ messages in thread

* [PATCH 1/4] smiapp: Fix error handling in power on sequence
  2017-08-29 12:41 [PATCH 0/4] Better support for ACPI in smiapp Sakari Ailus
@ 2017-08-29 12:41 ` Sakari Ailus
  2017-08-29 12:41 ` [PATCH 2/4] smiapp: Verify clock frequency after setting it, prevent changing it Sakari Ailus
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 8+ messages in thread
From: Sakari Ailus @ 2017-08-29 12:41 UTC (permalink / raw)
  To: linux-media

The error handling code in smiapp_power_on() returned in case of a failed
I2C write instead of cleaning up the mess. Fix this.

Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
---
 drivers/media/i2c/smiapp/smiapp-core.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/media/i2c/smiapp/smiapp-core.c b/drivers/media/i2c/smiapp/smiapp-core.c
index 700f433261d0..d581625d7826 100644
--- a/drivers/media/i2c/smiapp/smiapp-core.c
+++ b/drivers/media/i2c/smiapp/smiapp-core.c
@@ -1313,7 +1313,7 @@ static int smiapp_power_on(struct device *dev)
 	rval = smiapp_write(sensor, SMIAPP_REG_U8_DPHY_CTRL,
 			    SMIAPP_DPHY_CTRL_UI);
 	if (rval < 0)
-		return rval;
+		goto out_cci_addr_fail;
 
 	rval = smiapp_call_quirk(sensor, post_poweron);
 	if (rval) {
-- 
2.11.0

^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [PATCH 2/4] smiapp: Verify clock frequency after setting it, prevent changing it
  2017-08-29 12:41 [PATCH 0/4] Better support for ACPI in smiapp Sakari Ailus
  2017-08-29 12:41 ` [PATCH 1/4] smiapp: Fix error handling in power on sequence Sakari Ailus
@ 2017-08-29 12:41 ` Sakari Ailus
  2017-08-29 12:41 ` [PATCH 3/4] smiapp: Get clock rate if it's not available through DT Sakari Ailus
  2017-08-29 12:41 ` [PATCH 4/4] smiapp: Make clock control optional Sakari Ailus
  3 siblings, 0 replies; 8+ messages in thread
From: Sakari Ailus @ 2017-08-29 12:41 UTC (permalink / raw)
  To: linux-media

The external clock frequency was set by the driver but the obtained
frequency was never verified. Do that.

Being able to obtain the exact frequency is important as the value is used
for PLL calculations which may result in frequencies that violate the PLL
tree limits.

Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
---
 drivers/media/i2c/smiapp/smiapp-core.c | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/drivers/media/i2c/smiapp/smiapp-core.c b/drivers/media/i2c/smiapp/smiapp-core.c
index d581625d7826..55771826b446 100644
--- a/drivers/media/i2c/smiapp/smiapp-core.c
+++ b/drivers/media/i2c/smiapp/smiapp-core.c
@@ -2870,6 +2870,7 @@ static int smiapp_probe(struct i2c_client *client,
 {
 	struct smiapp_sensor *sensor;
 	struct smiapp_hwconfig *hwcfg = smiapp_get_hwconfig(&client->dev);
+	unsigned long rate;
 	unsigned int i;
 	int rval;
 
@@ -2908,6 +2909,14 @@ static int smiapp_probe(struct i2c_client *client,
 		return rval;
 	}
 
+	rate = clk_get_rate(sensor->ext_clk);
+	if (rate != sensor->hwcfg->ext_clk) {
+		dev_err(&client->dev,
+			"can't set clock freq, asked for %u but got %lu\n",
+			sensor->hwcfg->ext_clk, rate);
+		return rval;
+	}
+
 	sensor->xshutdown = devm_gpiod_get_optional(&client->dev, "xshutdown",
 						    GPIOD_OUT_LOW);
 	if (IS_ERR(sensor->xshutdown))
-- 
2.11.0

^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [PATCH 3/4] smiapp: Get clock rate if it's not available through DT
  2017-08-29 12:41 [PATCH 0/4] Better support for ACPI in smiapp Sakari Ailus
  2017-08-29 12:41 ` [PATCH 1/4] smiapp: Fix error handling in power on sequence Sakari Ailus
  2017-08-29 12:41 ` [PATCH 2/4] smiapp: Verify clock frequency after setting it, prevent changing it Sakari Ailus
@ 2017-08-29 12:41 ` Sakari Ailus
  2017-08-29 12:41 ` [PATCH 4/4] smiapp: Make clock control optional Sakari Ailus
  3 siblings, 0 replies; 8+ messages in thread
From: Sakari Ailus @ 2017-08-29 12:41 UTC (permalink / raw)
  To: linux-media

Obtain the clock rate from the clock framework if it's not available
through DT. The assumption is that the parent device (camera module)
defines the rate as clock control is a part of the power on and power off
sequences --- which are camera module specific.

Also use the clock rate from DT if no clock is provided.

Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
---
 drivers/media/i2c/smiapp/smiapp-core.c | 52 +++++++++++++++++++++-------------
 1 file changed, 33 insertions(+), 19 deletions(-)

diff --git a/drivers/media/i2c/smiapp/smiapp-core.c b/drivers/media/i2c/smiapp/smiapp-core.c
index 55771826b446..009b5e26204b 100644
--- a/drivers/media/i2c/smiapp/smiapp-core.c
+++ b/drivers/media/i2c/smiapp/smiapp-core.c
@@ -2829,12 +2829,10 @@ static struct smiapp_hwconfig *smiapp_get_hwconfig(struct device *dev)
 	/* NVM size is not mandatory */
 	fwnode_property_read_u32(fwnode, "nokia,nvm-size", &hwcfg->nvm_size);
 
-	rval = fwnode_property_read_u32(fwnode, "clock-frequency",
+	rval = fwnode_property_read_u32(dev_fwnode(dev), "clock-frequency",
 					&hwcfg->ext_clk);
-	if (rval) {
-		dev_warn(dev, "can't get clock-frequency\n");
-		goto out_err;
-	}
+	if (rval)
+		dev_info(dev, "can't get clock-frequency\n");
 
 	dev_dbg(dev, "nvm %d, clk %d, mode %d\n",
 		hwcfg->nvm_size, hwcfg->ext_clk, hwcfg->csi_signalling_mode);
@@ -2870,7 +2868,6 @@ static int smiapp_probe(struct i2c_client *client,
 {
 	struct smiapp_sensor *sensor;
 	struct smiapp_hwconfig *hwcfg = smiapp_get_hwconfig(&client->dev);
-	unsigned long rate;
 	unsigned int i;
 	int rval;
 
@@ -2901,20 +2898,37 @@ static int smiapp_probe(struct i2c_client *client,
 		return -EPROBE_DEFER;
 	}
 
-	rval = clk_set_rate(sensor->ext_clk, sensor->hwcfg->ext_clk);
-	if (rval < 0) {
-		dev_err(&client->dev,
-			"unable to set clock freq to %u\n",
-			sensor->hwcfg->ext_clk);
-		return rval;
-	}
+	if (sensor->ext_clk) {
+		if (sensor->hwcfg->ext_clk) {
+			unsigned long rate;
 
-	rate = clk_get_rate(sensor->ext_clk);
-	if (rate != sensor->hwcfg->ext_clk) {
-		dev_err(&client->dev,
-			"can't set clock freq, asked for %u but got %lu\n",
-			sensor->hwcfg->ext_clk, rate);
-		return rval;
+			rval = clk_set_rate(sensor->ext_clk,
+					    sensor->hwcfg->ext_clk);
+			if (rval < 0) {
+				dev_err(&client->dev,
+					"unable to set clock freq to %u\n",
+					sensor->hwcfg->ext_clk);
+				return rval;
+			}
+
+			rate = clk_get_rate(sensor->ext_clk);
+			if (rate != sensor->hwcfg->ext_clk) {
+				dev_err(&client->dev,
+					"can't set clock freq, asked for %u but got %lu\n",
+					sensor->hwcfg->ext_clk, rate);
+				return rval;
+			}
+		} else {
+			sensor->hwcfg->ext_clk = clk_get_rate(sensor->ext_clk);
+			dev_dbg(&client->dev, "obtained clock freq %u\n",
+				sensor->hwcfg->ext_clk);
+		}
+	} else if (sensor->hwcfg->ext_clk) {
+		dev_dbg(&client->dev, "assuming clock freq %u\n",
+			sensor->hwcfg->ext_clk);
+	} else {
+		dev_err(&client->dev, "unable to obtain clock freq\n");
+		return -EINVAL;
 	}
 
 	sensor->xshutdown = devm_gpiod_get_optional(&client->dev, "xshutdown",
-- 
2.11.0

^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [PATCH 4/4] smiapp: Make clock control optional
  2017-08-29 12:41 [PATCH 0/4] Better support for ACPI in smiapp Sakari Ailus
                   ` (2 preceding siblings ...)
  2017-08-29 12:41 ` [PATCH 3/4] smiapp: Get clock rate if it's not available through DT Sakari Ailus
@ 2017-08-29 12:41 ` Sakari Ailus
  3 siblings, 0 replies; 8+ messages in thread
From: Sakari Ailus @ 2017-08-29 12:41 UTC (permalink / raw)
  To: linux-media

The clock control is not explicitly controlled by the driver in two cases:
ACPI based systems and when the clock is part of the power sequence of the
camera module.

Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
---
 drivers/media/i2c/smiapp/smiapp-core.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/drivers/media/i2c/smiapp/smiapp-core.c b/drivers/media/i2c/smiapp/smiapp-core.c
index 009b5e26204b..fbd851be51d2 100644
--- a/drivers/media/i2c/smiapp/smiapp-core.c
+++ b/drivers/media/i2c/smiapp/smiapp-core.c
@@ -2892,7 +2892,10 @@ static int smiapp_probe(struct i2c_client *client,
 	}
 
 	sensor->ext_clk = devm_clk_get(&client->dev, NULL);
-	if (IS_ERR(sensor->ext_clk)) {
+	if (PTR_ERR(sensor->ext_clk) == -ENOENT) {
+		dev_info(&client->dev, "no clock defined, continuing...\n");
+		sensor->ext_clk = NULL;
+	} else if (IS_ERR(sensor->ext_clk)) {
 		dev_err(&client->dev, "could not get clock (%ld)\n",
 			PTR_ERR(sensor->ext_clk));
 		return -EPROBE_DEFER;
-- 
2.11.0

^ permalink raw reply related	[flat|nested] 8+ messages in thread

* Re: [PATCH 3/4] smiapp: Get clock rate if it's not available through DT
  2017-02-13 16:16 ` [PATCH 3/4] smiapp: Get clock rate if it's not available through DT Sakari Ailus
  2017-02-13 18:27   ` kbuild test robot
@ 2017-02-15 23:05   ` kbuild test robot
  1 sibling, 0 replies; 8+ messages in thread
From: kbuild test robot @ 2017-02-15 23:05 UTC (permalink / raw)
  To: Sakari Ailus; +Cc: kbuild-all, linux-media

[-- Attachment #1: Type: text/plain, Size: 3066 bytes --]

Hi Sakari,

[auto build test WARNING on linus/master]
[also build test WARNING on v4.10-rc8]
[cannot apply to linuxtv-media/master next-20170215]
[if your patch is applied to the wrong git tree, please drop us a note to help improve the system]

url:    https://github.com/0day-ci/linux/commits/Sakari-Ailus/smiapp-cleanups-clock-control-changes/20170214-010429
config: x86_64-randconfig-it0-02160426 (attached as .config)
compiler: gcc-4.9 (Debian 4.9.4-2) 4.9.4
reproduce:
        # save the attached .config to linux build tree
        make ARCH=x86_64 

All warnings (new ones prefixed by >>):

   drivers/media/i2c/smiapp/smiapp-core.c: In function 'smiapp_probe':
>> drivers/media/i2c/smiapp/smiapp-core.c:2909:6: warning: format '%lu' expects argument of type 'long unsigned int', but argument 3 has type 'uint32_t' [-Wformat=]
         sensor->hwcfg->ext_clk, rate);
         ^

vim +2909 drivers/media/i2c/smiapp/smiapp-core.c

88ea1579 Sakari Ailus 2017-02-13  2893  		if (sensor->hwcfg->ext_clk) {
88ea1579 Sakari Ailus 2017-02-13  2894  			unsigned long rate;
88ea1579 Sakari Ailus 2017-02-13  2895  
88ea1579 Sakari Ailus 2017-02-13  2896  			rval = clk_set_rate(sensor->ext_clk,
88ea1579 Sakari Ailus 2017-02-13  2897  					    sensor->hwcfg->ext_clk);
3ecb8664 Sakari Ailus 2016-09-12  2898  			if (rval < 0) {
3ecb8664 Sakari Ailus 2016-09-12  2899  				dev_err(&client->dev,
3ecb8664 Sakari Ailus 2016-09-12  2900  					"unable to set clock freq to %u\n",
3ecb8664 Sakari Ailus 2016-09-12  2901  					sensor->hwcfg->ext_clk);
3ecb8664 Sakari Ailus 2016-09-12  2902  				return rval;
3ecb8664 Sakari Ailus 2016-09-12  2903  			}
3ecb8664 Sakari Ailus 2016-09-12  2904  
87cb6c6a Sakari Ailus 2017-02-13  2905  			rate = clk_get_rate(sensor->ext_clk);
87cb6c6a Sakari Ailus 2017-02-13  2906  			if (rate != sensor->hwcfg->ext_clk) {
87cb6c6a Sakari Ailus 2017-02-13  2907  				dev_err(&client->dev,
88ea1579 Sakari Ailus 2017-02-13  2908  					"can't set clock freq, asked for %lu but got %lu\n",
87cb6c6a Sakari Ailus 2017-02-13 @2909  					sensor->hwcfg->ext_clk, rate);
87cb6c6a Sakari Ailus 2017-02-13  2910  				return rval;
87cb6c6a Sakari Ailus 2017-02-13  2911  			}
88ea1579 Sakari Ailus 2017-02-13  2912  		} else {
88ea1579 Sakari Ailus 2017-02-13  2913  			sensor->hwcfg->ext_clk = clk_get_rate(sensor->ext_clk);
88ea1579 Sakari Ailus 2017-02-13  2914  			dev_dbg(&client->dev, "obtained clock freq %u\n",
88ea1579 Sakari Ailus 2017-02-13  2915  				sensor->hwcfg->ext_clk);
88ea1579 Sakari Ailus 2017-02-13  2916  		}
88ea1579 Sakari Ailus 2017-02-13  2917  	} else if (sensor->hwcfg->ext_clk) {

:::::: The code at line 2909 was first introduced by commit
:::::: 87cb6c6a8fdcfc1d0327e6c826165f0ba1b5eff0 smiapp: Verify clock frequency after setting it, prevent changing it

:::::: TO: Sakari Ailus <sakari.ailus@linux.intel.com>
:::::: CC: 0day robot <fengguang.wu@intel.com>

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation

[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 31202 bytes --]

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH 3/4] smiapp: Get clock rate if it's not available through DT
  2017-02-13 16:16 ` [PATCH 3/4] smiapp: Get clock rate if it's not available through DT Sakari Ailus
@ 2017-02-13 18:27   ` kbuild test robot
  2017-02-15 23:05   ` kbuild test robot
  1 sibling, 0 replies; 8+ messages in thread
From: kbuild test robot @ 2017-02-13 18:27 UTC (permalink / raw)
  To: Sakari Ailus; +Cc: kbuild-all, linux-media

[-- Attachment #1: Type: text/plain, Size: 2015 bytes --]

Hi Sakari,

[auto build test WARNING on linus/master]
[also build test WARNING on v4.10-rc8]
[cannot apply to linuxtv-media/master next-20170213]
[if your patch is applied to the wrong git tree, please drop us a note to help improve the system]

url:    https://github.com/0day-ci/linux/commits/Sakari-Ailus/smiapp-cleanups-clock-control-changes/20170214-010429
config: i386-allmodconfig (attached as .config)
compiler: gcc-6 (Debian 6.2.0-3) 6.2.0 20160901
reproduce:
        # save the attached .config to linux build tree
        make ARCH=i386 

All warnings (new ones prefixed by >>):

   drivers/media/i2c/smiapp/smiapp-core.c: In function 'smiapp_probe':
>> drivers/media/i2c/smiapp/smiapp-core.c:2908:41: warning: format '%lu' expects argument of type 'long unsigned int', but argument 3 has type 'uint32_t {aka unsigned int}' [-Wformat=]
         "can't set clock freq, asked for %lu but got %lu\n",
                                            ^

vim +2908 drivers/media/i2c/smiapp/smiapp-core.c

  2892		if (sensor->ext_clk) {
  2893			if (sensor->hwcfg->ext_clk) {
  2894				unsigned long rate;
  2895	
  2896				rval = clk_set_rate(sensor->ext_clk,
  2897						    sensor->hwcfg->ext_clk);
  2898				if (rval < 0) {
  2899					dev_err(&client->dev,
  2900						"unable to set clock freq to %u\n",
  2901						sensor->hwcfg->ext_clk);
  2902					return rval;
  2903				}
  2904	
  2905				rate = clk_get_rate(sensor->ext_clk);
  2906				if (rate != sensor->hwcfg->ext_clk) {
  2907					dev_err(&client->dev,
> 2908						"can't set clock freq, asked for %lu but got %lu\n",
  2909						sensor->hwcfg->ext_clk, rate);
  2910					return rval;
  2911				}
  2912			} else {
  2913				sensor->hwcfg->ext_clk = clk_get_rate(sensor->ext_clk);
  2914				dev_dbg(&client->dev, "obtained clock freq %u\n",
  2915					sensor->hwcfg->ext_clk);
  2916			}

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation

[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 57940 bytes --]

^ permalink raw reply	[flat|nested] 8+ messages in thread

* [PATCH 3/4] smiapp: Get clock rate if it's not available through DT
  2017-02-13 16:16 [PATCH 0/4] smiapp cleanups, clock control changes Sakari Ailus
@ 2017-02-13 16:16 ` Sakari Ailus
  2017-02-13 18:27   ` kbuild test robot
  2017-02-15 23:05   ` kbuild test robot
  0 siblings, 2 replies; 8+ messages in thread
From: Sakari Ailus @ 2017-02-13 16:16 UTC (permalink / raw)
  To: linux-media

Obtain the clock rate from the clock framework if it's not available
through DT. The assumption is that the parent device (camera module)
defines the rate as clock control is a part of the power on and power off
sequences --- which are camera module specific.

Also use the clock rate from DT if no clock is provided.

Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
---
 drivers/media/i2c/smiapp/smiapp-core.c | 50 ++++++++++++++++++++++------------
 1 file changed, 32 insertions(+), 18 deletions(-)

diff --git a/drivers/media/i2c/smiapp/smiapp-core.c b/drivers/media/i2c/smiapp/smiapp-core.c
index 64ee215..caf376c 100644
--- a/drivers/media/i2c/smiapp/smiapp-core.c
+++ b/drivers/media/i2c/smiapp/smiapp-core.c
@@ -2822,10 +2822,8 @@ static struct smiapp_hwconfig *smiapp_get_hwconfig(struct device *dev)
 
 	rval = of_property_read_u32(dev->of_node, "clock-frequency",
 				    &hwcfg->ext_clk);
-	if (rval) {
-		dev_warn(dev, "can't get clock-frequency\n");
-		goto out_err;
-	}
+	if (rval)
+		dev_info(dev, "can't get clock-frequency\n");
 
 	dev_dbg(dev, "nvm %d, clk %d, csi %d\n", hwcfg->nvm_size,
 		hwcfg->ext_clk, hwcfg->csi_signalling_mode);
@@ -2861,7 +2859,6 @@ static int smiapp_probe(struct i2c_client *client,
 {
 	struct smiapp_sensor *sensor;
 	struct smiapp_hwconfig *hwcfg = smiapp_get_hwconfig(&client->dev);
-	unsigned long rate;
 	unsigned int i;
 	int rval;
 
@@ -2892,20 +2889,37 @@ static int smiapp_probe(struct i2c_client *client,
 		return -EPROBE_DEFER;
 	}
 
-	rval = clk_set_rate(sensor->ext_clk, sensor->hwcfg->ext_clk);
-	if (rval < 0) {
-		dev_err(&client->dev,
-			"unable to set clock freq to %u\n",
-			sensor->hwcfg->ext_clk);
-		return rval;
-	}
+	if (sensor->ext_clk) {
+		if (sensor->hwcfg->ext_clk) {
+			unsigned long rate;
 
-	rate = clk_get_rate(sensor->ext_clk);
-	if (rate != sensor->hwcfg->ext_clk) {
-		dev_err(&client->dev,
-			"can't set clock freq, asked for %u but got %lu\n",
-			sensor->hwcfg->ext_clk, rate);
-		return rval;
+			rval = clk_set_rate(sensor->ext_clk,
+					    sensor->hwcfg->ext_clk);
+			if (rval < 0) {
+				dev_err(&client->dev,
+					"unable to set clock freq to %u\n",
+					sensor->hwcfg->ext_clk);
+				return rval;
+			}
+
+			rate = clk_get_rate(sensor->ext_clk);
+			if (rate != sensor->hwcfg->ext_clk) {
+				dev_err(&client->dev,
+					"can't set clock freq, asked for %lu but got %lu\n",
+					sensor->hwcfg->ext_clk, rate);
+				return rval;
+			}
+		} else {
+			sensor->hwcfg->ext_clk = clk_get_rate(sensor->ext_clk);
+			dev_dbg(&client->dev, "obtained clock freq %u\n",
+				sensor->hwcfg->ext_clk);
+		}
+	} else if (sensor->hwcfg->ext_clk) {
+		dev_dbg(&client->dev, "assuming clock freq %u\n",
+			sensor->hwcfg->ext_clk);
+	} else {
+		dev_err(&client->dev, "unable to obtain clock freq\n");
+		return -EINVAL;
 	}
 
 	sensor->xshutdown = devm_gpiod_get_optional(&client->dev, "xshutdown",
-- 
2.1.4

^ permalink raw reply related	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2017-08-29 12:41 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-08-29 12:41 [PATCH 0/4] Better support for ACPI in smiapp Sakari Ailus
2017-08-29 12:41 ` [PATCH 1/4] smiapp: Fix error handling in power on sequence Sakari Ailus
2017-08-29 12:41 ` [PATCH 2/4] smiapp: Verify clock frequency after setting it, prevent changing it Sakari Ailus
2017-08-29 12:41 ` [PATCH 3/4] smiapp: Get clock rate if it's not available through DT Sakari Ailus
2017-08-29 12:41 ` [PATCH 4/4] smiapp: Make clock control optional Sakari Ailus
  -- strict thread matches above, loose matches on Subject: below --
2017-02-13 16:16 [PATCH 0/4] smiapp cleanups, clock control changes Sakari Ailus
2017-02-13 16:16 ` [PATCH 3/4] smiapp: Get clock rate if it's not available through DT Sakari Ailus
2017-02-13 18:27   ` kbuild test robot
2017-02-15 23:05   ` kbuild test robot

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.