diff options
author | Wenyou Yang <wenyou.yang@atmel.com> | 2014-11-09 20:55:52 -0500 |
---|---|---|
committer | Wolfram Sang <wsa@the-dreams.de> | 2014-11-12 10:50:24 -0500 |
commit | 62d10c402f085be2bfa51b39199a76249ec09396 (patch) | |
tree | b2b60c8e6894473738a37857499922d88f144cbe /drivers/i2c | |
parent | ab0831d0f35b44724390134d03bcff99ae0d8a7e (diff) |
i2c: at91: adopt pinctrl support
Amend the at91 i2c pin controller to set the state of the pins to:
- "default" on resume.
- "sleep" on suspend().
This should make it possible to optimize energy usage for the pins
both for the suspend/resume cycle
Signed-off-by: Wenyou Yang <wenyou.yang@atmel.com>
Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
Diffstat (limited to 'drivers/i2c')
-rw-r--r-- | drivers/i2c/busses/i2c-at91.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/drivers/i2c/busses/i2c-at91.c b/drivers/i2c/busses/i2c-at91.c index 7c335f41dc3d..77fb6472fd5d 100644 --- a/drivers/i2c/busses/i2c-at91.c +++ b/drivers/i2c/busses/i2c-at91.c | |||
@@ -32,6 +32,7 @@ | |||
32 | #include <linux/slab.h> | 32 | #include <linux/slab.h> |
33 | #include <linux/platform_data/dma-atmel.h> | 33 | #include <linux/platform_data/dma-atmel.h> |
34 | #include <linux/pm_runtime.h> | 34 | #include <linux/pm_runtime.h> |
35 | #include <linux/pinctrl/consumer.h> | ||
35 | 36 | ||
36 | #define DEFAULT_TWI_CLK_HZ 100000 /* max 400 Kbits/s */ | 37 | #define DEFAULT_TWI_CLK_HZ 100000 /* max 400 Kbits/s */ |
37 | #define AT91_I2C_TIMEOUT msecs_to_jiffies(100) /* transfer timeout */ | 38 | #define AT91_I2C_TIMEOUT msecs_to_jiffies(100) /* transfer timeout */ |
@@ -851,6 +852,8 @@ static int at91_twi_runtime_suspend(struct device *dev) | |||
851 | 852 | ||
852 | clk_disable_unprepare(twi_dev->clk); | 853 | clk_disable_unprepare(twi_dev->clk); |
853 | 854 | ||
855 | pinctrl_pm_select_sleep_state(dev); | ||
856 | |||
854 | return 0; | 857 | return 0; |
855 | } | 858 | } |
856 | 859 | ||
@@ -858,6 +861,8 @@ static int at91_twi_runtime_resume(struct device *dev) | |||
858 | { | 861 | { |
859 | struct at91_twi_dev *twi_dev = dev_get_drvdata(dev); | 862 | struct at91_twi_dev *twi_dev = dev_get_drvdata(dev); |
860 | 863 | ||
864 | pinctrl_pm_select_default_state(dev); | ||
865 | |||
861 | return clk_prepare_enable(twi_dev->clk); | 866 | return clk_prepare_enable(twi_dev->clk); |
862 | } | 867 | } |
863 | 868 | ||