diff options
| author | 2017-01-28 15:09:23 -0800 | |
|---|---|---|
| committer | 2017-01-28 15:09:23 -0800 | |
| commit | 53cd1ad1a68fd10f677445e04ed63aa9ce39b36b (patch) | |
| tree | c3401d2cbce4615b9a4e1d2bc060e8a310321eaa /drivers | |
| parent | Merge tag 'nfs-for-4.10-4' of git://git.linux-nfs.org/projects/trondmy/linux-nfs (diff) | |
| parent | i2c: imx-lpi2c: add VLLS mode support (diff) | |
| download | wireguard-linux-53cd1ad1a68fd10f677445e04ed63aa9ce39b36b.tar.xz wireguard-linux-53cd1ad1a68fd10f677445e04ed63aa9ce39b36b.zip  | |
Merge branch 'i2c/for-current' of git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux
Pull i2c fixes from Wolfram Sang:
 "Two I2C driver bugfixes.
  The 'VLLS mode support' patch should have been entitled 'reconfigure
  pinctrl after suspend' to make the bugfix more clear. Sorry, I missed
  that, yet didn't want to rebase"
* 'i2c/for-current' of git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux:
  i2c: imx-lpi2c: add VLLS mode support
  i2c: i2c-cadence: Initialize configuration before probing devices
Diffstat (limited to '')
| -rw-r--r-- | drivers/i2c/busses/i2c-cadence.c | 8 | ||||
| -rw-r--r-- | drivers/i2c/busses/i2c-imx-lpi2c.c | 20 | 
2 files changed, 24 insertions, 4 deletions
diff --git a/drivers/i2c/busses/i2c-cadence.c b/drivers/i2c/busses/i2c-cadence.c index 686971263bef..45d6771fac8c 100644 --- a/drivers/i2c/busses/i2c-cadence.c +++ b/drivers/i2c/busses/i2c-cadence.c @@ -962,10 +962,6 @@ static int cdns_i2c_probe(struct platform_device *pdev)  		goto err_clk_dis;  	} -	ret = i2c_add_adapter(&id->adap); -	if (ret < 0) -		goto err_clk_dis; -  	/*  	 * Cadence I2C controller has a bug wherein it generates  	 * invalid read transaction after HW timeout in master receiver mode. @@ -975,6 +971,10 @@ static int cdns_i2c_probe(struct platform_device *pdev)  	 */  	cdns_i2c_writereg(CDNS_I2C_TIMEOUT_MAX, CDNS_I2C_TIME_OUT_OFFSET); +	ret = i2c_add_adapter(&id->adap); +	if (ret < 0) +		goto err_clk_dis; +  	dev_info(&pdev->dev, "%u kHz mmio %08lx irq %d\n",  		 id->i2c_clk / 1000, (unsigned long)r_mem->start, id->irq); diff --git a/drivers/i2c/busses/i2c-imx-lpi2c.c b/drivers/i2c/busses/i2c-imx-lpi2c.c index c62b7cd475f8..3310f2e0dbd3 100644 --- a/drivers/i2c/busses/i2c-imx-lpi2c.c +++ b/drivers/i2c/busses/i2c-imx-lpi2c.c @@ -28,6 +28,7 @@  #include <linux/module.h>  #include <linux/of.h>  #include <linux/of_device.h> +#include <linux/pinctrl/consumer.h>  #include <linux/platform_device.h>  #include <linux/sched.h>  #include <linux/slab.h> @@ -636,12 +637,31 @@ static int lpi2c_imx_remove(struct platform_device *pdev)  	return 0;  } +#ifdef CONFIG_PM_SLEEP +static int lpi2c_imx_suspend(struct device *dev) +{ +	pinctrl_pm_select_sleep_state(dev); + +	return 0; +} + +static int lpi2c_imx_resume(struct device *dev) +{ +	pinctrl_pm_select_default_state(dev); + +	return 0; +} +#endif + +static SIMPLE_DEV_PM_OPS(imx_lpi2c_pm, lpi2c_imx_suspend, lpi2c_imx_resume); +  static struct platform_driver lpi2c_imx_driver = {  	.probe = lpi2c_imx_probe,  	.remove = lpi2c_imx_remove,  	.driver = {  		.name = DRIVER_NAME,  		.of_match_table = lpi2c_imx_of_match, +		.pm = &imx_lpi2c_pm,  	},  };  | 
