i2c: designware: add reset interface
Subsystems (3)
PATCH RESEND v3 1/1 i2c: designware: add reset interface
Some platforms like hi3660 need do reset first to allow accessing registers
---
rebase to 4.10-rc1
drivers/i2c/busses/i2c-designware-core.h | 1 + drivers/i2c/busses/i2c-designware-platdrv.c | 28 ++++++++++++++++++++++++---- 2 files changed, 25 insertions(+), 4 deletions(-)
drivers/i2c/busses/i2c-designware-core.h +1 -0
@@ -88,6 +88,7 @@ struct dw_i2c_dev {void __iomem *base;struct completion cmd_complete;struct clk *clk; +struct reset_control *rst;u32 (*get_clk_rate_khz) (struct dw_i2c_dev *dev);struct dw_pci_controller *controller;int cmd_err;
drivers/i2c/busses/i2c-designware-platdrv.c +24 -4
@@ -38,6 +38,7 @@#include <linux/pm_runtime.h> #include <linux/property.h> #include <linux/io.h> +#include <linux/reset.h> #include <linux/slab.h> #include <linux/acpi.h> #include <linux/platform_data/i2c-designware.h>
@@ -199,6 +200,14 @@ static int dw_i2c_plat_probe(struct platform_device *pdev) dev->irq = irq;platform_set_drvdata (pdev, dev); + dev->rst =devm_reset_control_get_optional_exclusive (&pdev->dev,NULL ); +if (IS_ERR (dev->rst)) { +if (PTR_ERR (dev->rst) == -EPROBE_DEFER ) +return -EPROBE_DEFER ; + }else { +reset_control_deassert (dev->rst); + } +if (pdata) { dev->clk_freq = pdata->i2c_scl_freq; }else {
@@ -235,12 +244,13 @@ static int dw_i2c_plat_probe(struct platform_device *pdev) && dev->clk_freq != 1000000 && dev->clk_freq != 3400000) {dev_err (&pdev->dev,"Only 100kHz, 400kHz, 1MHz and 3.4MHz supported" ); -return -EINVAL ; + r = -EINVAL ; + goto exit_reset; } r =i2c_dw_eval_lock_support (dev);if (r) -return r; + goto exit_reset; dev->functionality =I2C_FUNC_10BIT_ADDR |DW_IC_DEFAULT_FUNCTIONALITY ;
@@ -286,10 +296,18 @@ static int dw_i2c_plat_probe(struct platform_device *pdev) } r =i2c_dw_probe (dev); -if (r && !dev->pm_runtime_disabled) -pm_runtime_disable (&pdev->dev); +if (r) + goto exit_probe;return r; + +exit_probe: +if (!dev->pm_runtime_disabled) +pm_runtime_disable (&pdev->dev); +exit_reset: +if (!IS_ERR_OR_NULL (dev->rst)) +reset_control_assert (dev->rst); +return r; }static int dw_i2c_plat_remove (struct platform_device *pdev)
@@ -306,6 +324,8 @@ static int dw_i2c_plat_remove(struct platform_device *pdev)pm_runtime_put_sync (&pdev->dev);if (!dev->pm_runtime_disabled)pm_runtime_disable (&pdev->dev); +if (!IS_ERR_OR_NULL (dev->rst)) +reset_control_assert (dev->rst);return 0 ; }
Signature · 1 line
2.7.4
PATCH RESEND v3 1/1 i2c: designware: add reset interface
Quoted 5 lines · Zhangfei Gao
Some platforms like hi3660 need do reset first to allow accessing registers
Signed-off-by Zhangfei Gao <[email protected]>Reviewed-by Andy Shevchenko <[email protected]>Tested-by Ramiro Oliveira <[email protected]>
Quoted 7 lines
---
rebase to 4.10-rc1drivers/i2c/busses/i2c-designware-core.h | 1 + drivers/i2c/busses/i2c-designware-platdrv.c | 28 ++++++++++++++++++++++++---- 2 files changed, 25 insertions(+), 4 deletions(-)
Wolfram Sang
AppliedPATCH RESEND v3 1/1 i2c: designware: add reset interface
In reply to Zhangfei GaoQuoted 5 lines · Zhangfei Gao
Some platforms like hi3660 need do reset first to allow accessing registers
Signed-off-by Zhangfei Gao <[email protected]>Reviewed-by Andy Shevchenko <[email protected]>Tested-by Ramiro Oliveira <[email protected]>
Applied to for-next, thanks!
PATCH RESEND v3 1/1 i2c: designware: add reset interface
Hi Wolfram
Quoted 9 lines · Wolfram Sang
Quoted 5 lines · Zhangfei Gao
Some platforms like hi3660 need do reset first to allow accessing registers
Signed-off-by Zhangfei Gao <[email protected]>Reviewed-by Andy Shevchenko <[email protected]>Tested-by Ramiro Oliveira <[email protected]>Applied to for-next, thanks!
I haven't been able to find this patch anywhere. Do you still have plans to apply it to for-next?
Signature · 4 lines
Best Regards Ramiro Oliveira Ramiro.Oliveira at synopsys.com
Wolfram Sang
AppliedPATCH RESEND v3 1/1 i2c: designware: add reset interface
Quoted 10 lines · Ramiro Oliveira
Hi Wolfram
Quoted 7 lines · Wolfram Sang
Quoted 5 lines · Zhangfei Gao
Some platforms like hi3660 need do reset first to allow accessing registers
Signed-off-by Zhangfei Gao <[email protected]>Reviewed-by Andy Shevchenko <[email protected]>Tested-by Ramiro Oliveira <[email protected]>
Quoted 5 lines
Quoted 2 lines
Applied to for-next, thanks!
I haven't been able to find this patch anywhere. Do you still have plans to apply it to for-next?
Uh, thanks for the heads up. Can't really tell why it fell through the cracks :( It probably got lost by an improper rebase by me? Sorry about that.
Applied to for-current, thanks again!
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: not available
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20170309/e4894bf1/attachment.sig>