diff options
author | Tan, Raymond <raymond.tan@intel.com> | 2014-09-02 22:41:38 -0400 |
---|---|---|
committer | Wolfram Sang <wsa@the-dreams.de> | 2014-09-29 16:41:17 -0400 |
commit | 4bcfda09936da647b0a3b49d5dcb3c6c6ebb0395 (patch) | |
tree | 6a838ea3032bcfb468308597bab573952a88a692 /drivers/i2c/busses/i2c-designware-platdrv.c | |
parent | 8e5f6b2a289c4374456fb785900b0b7445b719e6 (diff) |
i2c: designware: add support of platform data to set I2C mode
Use the platform data to set the clk_freq when there is no DT configuration
available. The clk_freq in turn will determine the I2C speed mode.
In Quark, there is currently no other configuration mechanism other than
board files.
Signed-off-by: Raymond Tan <raymond.tan@intel.com>
Reviewed-by: Mika Westerberg <mika.westerberg@linux.intel.com>
Reviewed-by: Hock Leong Kweh <hock.leong.kweh@intel.com>
Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
Diffstat (limited to 'drivers/i2c/busses/i2c-designware-platdrv.c')
-rw-r--r-- | drivers/i2c/busses/i2c-designware-platdrv.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/drivers/i2c/busses/i2c-designware-platdrv.c b/drivers/i2c/busses/i2c-designware-platdrv.c index 8193e8eea764..4d6a6b94e2fa 100644 --- a/drivers/i2c/busses/i2c-designware-platdrv.c +++ b/drivers/i2c/busses/i2c-designware-platdrv.c | |||
@@ -41,6 +41,7 @@ | |||
41 | #include <linux/io.h> | 41 | #include <linux/io.h> |
42 | #include <linux/slab.h> | 42 | #include <linux/slab.h> |
43 | #include <linux/acpi.h> | 43 | #include <linux/acpi.h> |
44 | #include <linux/platform_data/i2c-designware.h> | ||
44 | #include "i2c-designware-core.h" | 45 | #include "i2c-designware-core.h" |
45 | 46 | ||
46 | static struct i2c_algorithm i2c_dw_algo = { | 47 | static struct i2c_algorithm i2c_dw_algo = { |
@@ -122,6 +123,7 @@ static int dw_i2c_probe(struct platform_device *pdev) | |||
122 | struct dw_i2c_dev *dev; | 123 | struct dw_i2c_dev *dev; |
123 | struct i2c_adapter *adap; | 124 | struct i2c_adapter *adap; |
124 | struct resource *mem; | 125 | struct resource *mem; |
126 | struct dw_i2c_platform_data *pdata; | ||
125 | int irq, r; | 127 | int irq, r; |
126 | u32 clk_freq; | 128 | u32 clk_freq; |
127 | 129 | ||
@@ -182,6 +184,10 @@ static int dw_i2c_probe(struct platform_device *pdev) | |||
182 | dev_err(&pdev->dev, "Only 100kHz and 400kHz supported"); | 184 | dev_err(&pdev->dev, "Only 100kHz and 400kHz supported"); |
183 | return -EINVAL; | 185 | return -EINVAL; |
184 | } | 186 | } |
187 | } else { | ||
188 | pdata = dev_get_platdata(&pdev->dev); | ||
189 | if (pdata) | ||
190 | clk_freq = pdata->i2c_scl_freq; | ||
185 | } | 191 | } |
186 | 192 | ||
187 | dev->functionality = | 193 | dev->functionality = |