diff for duplicates of <1481805227.9552.15.camel@linux.intel.com> diff --git a/a/1.txt b/N1/1.txt index 3e98070..7d1910d 100644 --- a/a/1.txt +++ b/N1/1.txt @@ -9,10 +9,10 @@ Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com> > > Signed-off-by: Zhangfei Gao <zhangfei.gao@linaro.org> > --- -> drivers/i2c/busses/i2c-designware-core.h | 1 + -> drivers/i2c/busses/i2c-designware-platdrv.c | 28 +> ?drivers/i2c/busses/i2c-designware-core.h????|??1 + +> ?drivers/i2c/busses/i2c-designware-platdrv.c | 28 > ++++++++++++++++++++++++---- -> 2 files changed, 25 insertions(+), 4 deletions(-) +> ?2 files changed, 25 insertions(+), 4 deletions(-) > > diff --git a/drivers/i2c/busses/i2c-designware-core.h > b/drivers/i2c/busses/i2c-designware-core.h @@ -20,32 +20,32 @@ Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com> > --- a/drivers/i2c/busses/i2c-designware-core.h > +++ b/drivers/i2c/busses/i2c-designware-core.h > @@ -80,6 +80,7 @@ struct dw_i2c_dev { -> void __iomem *base; -> struct completion cmd_complete; -> struct clk *clk; +> ? void __iomem *base; +> ? struct completion cmd_complete; +> ? struct clk *clk; > + struct reset_control *rst; -> u32 (*get_clk_rate_khz) (struct +> ? u32 (*get_clk_rate_khz) (struct > dw_i2c_dev *dev); -> struct dw_pci_controller *controller; -> int cmd_err; +> ? struct dw_pci_controller *controller; +> ? int cmd_err; > diff --git a/drivers/i2c/busses/i2c-designware-platdrv.c > b/drivers/i2c/busses/i2c-designware-platdrv.c > index 0b42a12..e9016ae 100644 > --- a/drivers/i2c/busses/i2c-designware-platdrv.c > +++ b/drivers/i2c/busses/i2c-designware-platdrv.c > @@ -38,6 +38,7 @@ -> #include <linux/pm_runtime.h> -> #include <linux/property.h> -> #include <linux/io.h> +> ?#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> +> ?#include <linux/slab.h> +> ?#include <linux/acpi.h> +> ?#include <linux/platform_data/i2c-designware.h> > @@ -176,6 +177,14 @@ static int dw_i2c_plat_probe(struct > platform_device *pdev) -> dev->irq = irq; -> platform_set_drvdata(pdev, dev); -> +> ? dev->irq = irq; +> ? platform_set_drvdata(pdev, dev); +> ? > + dev->rst = devm_reset_control_get_optional(&pdev->dev, NULL); > + if (IS_ERR(dev->rst)) { > + if (PTR_ERR(dev->rst) == -EPROBE_DEFER) @@ -54,39 +54,39 @@ Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com> > + reset_control_deassert(dev->rst); > + } > + -> /* fast mode by default because of legacy reasons */ -> dev->clk_freq = 400000; -> +> ? /* fast mode by default because of legacy reasons */ +> ? dev->clk_freq = 400000; +> ? > @@ -207,12 +216,13 @@ static int dw_i2c_plat_probe(struct > platform_device *pdev) -> && dev->clk_freq != 1000000 && dev->clk_freq != 3400000) +> ? ????&& dev->clk_freq != 1000000 && dev->clk_freq != 3400000) > { -> dev_err(&pdev->dev, -> "Only 100kHz, 400kHz, 1MHz and 3.4MHz +> ? 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) +> ? } +> ? +> ? r = i2c_dw_eval_lock_support(dev); +> ? if (r) > - return r; > + goto exit_reset; -> -> dev->functionality = -> I2C_FUNC_I2C | +> ? +> ? dev->functionality = +> ? I2C_FUNC_I2C | > @@ -270,10 +280,18 @@ static int dw_i2c_plat_probe(struct > platform_device *pdev) -> } -> -> r = i2c_dw_probe(dev); +> ? } +> ? +> ? r = i2c_dw_probe(dev); > - if (r && !dev->pm_runtime_disabled) > - pm_runtime_disable(&pdev->dev); > + if (r) > + goto exit_probe; -> -> return r; +> ? +> ? return r; > + > +exit_probe: > + if (!dev->pm_runtime_disabled) @@ -95,19 +95,19 @@ Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com> > + if (!IS_ERR_OR_NULL(dev->rst)) > + reset_control_assert(dev->rst); > + return r; -> } -> -> static int dw_i2c_plat_remove(struct platform_device *pdev) +> ?} +> ? +> ?static int dw_i2c_plat_remove(struct platform_device *pdev) > @@ -290,6 +308,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); +> ? 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; -> } +> ? +> ? return 0; +> ?} -- Andy Shevchenko <andriy.shevchenko@linux.intel.com> diff --git a/a/content_digest b/N1/content_digest index 7941666..36c7bb8 100644 --- a/a/content_digest +++ b/N1/content_digest @@ -1,14 +1,9 @@ "ref\01479789700-19532-1-git-send-email-zhangfei.gao@linaro.org\0" "ref\01481792388-13781-1-git-send-email-zhangfei.gao@linaro.org\0" - "From\0Andy Shevchenko <andriy.shevchenko@linux.intel.com>\0" - "Subject\0Re: [PATCH v2] i2c: designware: add reset interface\0" + "From\0andriy.shevchenko@linux.intel.com (Andy Shevchenko)\0" + "Subject\0[PATCH v2] i2c: designware: add reset interface\0" "Date\0Thu, 15 Dec 2016 14:33:47 +0200\0" - "To\0Zhangfei Gao <zhangfei.gao@linaro.org>" - Wolfram Sang <wsa@the-dreams.de> - mika.westerberg@linux.intel.com - " jarkko.nikula@linux.intel.com\0" - "Cc\0linux-arm-kernel@lists.infradead.org" - " linux-i2c@vger.kernel.org\0" + "To\0linux-arm-kernel@lists.infradead.org\0" "\00:1\0" "b\0" "On Thu, 2016-12-15 at 16:59 +0800, Zhangfei Gao wrote:\n" @@ -22,10 +17,10 @@ "> \n" "> Signed-off-by: Zhangfei Gao <zhangfei.gao@linaro.org>\n" "> ---\n" - "> \302\240drivers/i2c/busses/i2c-designware-core.h\302\240\302\240\302\240\302\240|\302\240\302\2401 +\n" - "> \302\240drivers/i2c/busses/i2c-designware-platdrv.c | 28\n" + "> ?drivers/i2c/busses/i2c-designware-core.h????|??1 +\n" + "> ?drivers/i2c/busses/i2c-designware-platdrv.c | 28\n" "> ++++++++++++++++++++++++----\n" - "> \302\2402 files changed, 25 insertions(+), 4 deletions(-)\n" + "> ?2 files changed, 25 insertions(+), 4 deletions(-)\n" "> \n" "> diff --git a/drivers/i2c/busses/i2c-designware-core.h\n" "> b/drivers/i2c/busses/i2c-designware-core.h\n" @@ -33,32 +28,32 @@ "> --- a/drivers/i2c/busses/i2c-designware-core.h\n" "> +++ b/drivers/i2c/busses/i2c-designware-core.h\n" "> @@ -80,6 +80,7 @@ struct dw_i2c_dev {\n" - "> \302\240\tvoid __iomem\t\t*base;\n" - "> \302\240\tstruct completion\tcmd_complete;\n" - "> \302\240\tstruct clk\t\t*clk;\n" + "> ?\tvoid __iomem\t\t*base;\n" + "> ?\tstruct completion\tcmd_complete;\n" + "> ?\tstruct clk\t\t*clk;\n" "> +\tstruct reset_control\t*rst;\n" - "> \302\240\tu32\t\t\t(*get_clk_rate_khz) (struct\n" + "> ?\tu32\t\t\t(*get_clk_rate_khz) (struct\n" "> dw_i2c_dev *dev);\n" - "> \302\240\tstruct dw_pci_controller *controller;\n" - "> \302\240\tint\t\t\tcmd_err;\n" + "> ?\tstruct dw_pci_controller *controller;\n" + "> ?\tint\t\t\tcmd_err;\n" "> diff --git a/drivers/i2c/busses/i2c-designware-platdrv.c\n" "> b/drivers/i2c/busses/i2c-designware-platdrv.c\n" "> index 0b42a12..e9016ae 100644\n" "> --- a/drivers/i2c/busses/i2c-designware-platdrv.c\n" "> +++ b/drivers/i2c/busses/i2c-designware-platdrv.c\n" "> @@ -38,6 +38,7 @@\n" - "> \302\240#include <linux/pm_runtime.h>\n" - "> \302\240#include <linux/property.h>\n" - "> \302\240#include <linux/io.h>\n" + "> ?#include <linux/pm_runtime.h>\n" + "> ?#include <linux/property.h>\n" + "> ?#include <linux/io.h>\n" "> +#include <linux/reset.h>\n" - "> \302\240#include <linux/slab.h>\n" - "> \302\240#include <linux/acpi.h>\n" - "> \302\240#include <linux/platform_data/i2c-designware.h>\n" + "> ?#include <linux/slab.h>\n" + "> ?#include <linux/acpi.h>\n" + "> ?#include <linux/platform_data/i2c-designware.h>\n" "> @@ -176,6 +177,14 @@ static int dw_i2c_plat_probe(struct\n" "> platform_device *pdev)\n" - "> \302\240\tdev->irq = irq;\n" - "> \302\240\tplatform_set_drvdata(pdev, dev);\n" - "> \302\240\n" + "> ?\tdev->irq = irq;\n" + "> ?\tplatform_set_drvdata(pdev, dev);\n" + "> ?\n" "> +\tdev->rst = devm_reset_control_get_optional(&pdev->dev, NULL);\n" "> +\tif (IS_ERR(dev->rst)) {\n" "> +\t\tif (PTR_ERR(dev->rst) == -EPROBE_DEFER)\n" @@ -67,39 +62,39 @@ "> +\t\treset_control_deassert(dev->rst);\n" "> +\t}\n" "> +\n" - "> \302\240\t/* fast mode by default because of legacy reasons */\n" - "> \302\240\tdev->clk_freq = 400000;\n" - "> \302\240\n" + "> ?\t/* fast mode by default because of legacy reasons */\n" + "> ?\tdev->clk_freq = 400000;\n" + "> ?\n" "> @@ -207,12 +216,13 @@ static int dw_i2c_plat_probe(struct\n" "> platform_device *pdev)\n" - "> \302\240\t\302\240\302\240\302\240\302\240&& dev->clk_freq != 1000000 && dev->clk_freq != 3400000)\n" + "> ?\t????&& dev->clk_freq != 1000000 && dev->clk_freq != 3400000)\n" "> {\n" - "> \302\240\t\tdev_err(&pdev->dev,\n" - "> \302\240\t\t\t\"Only 100kHz, 400kHz, 1MHz and 3.4MHz\n" + "> ?\t\tdev_err(&pdev->dev,\n" + "> ?\t\t\t\"Only 100kHz, 400kHz, 1MHz and 3.4MHz\n" "> supported\");\n" "> -\t\treturn -EINVAL;\n" "> +\t\tr = -EINVAL;\n" "> +\t\tgoto exit_reset;\n" - "> \302\240\t}\n" - "> \302\240\n" - "> \302\240\tr = i2c_dw_eval_lock_support(dev);\n" - "> \302\240\tif (r)\n" + "> ?\t}\n" + "> ?\n" + "> ?\tr = i2c_dw_eval_lock_support(dev);\n" + "> ?\tif (r)\n" "> -\t\treturn r;\n" "> +\t\tgoto exit_reset;\n" - "> \302\240\n" - "> \302\240\tdev->functionality =\n" - "> \302\240\t\tI2C_FUNC_I2C |\n" + "> ?\n" + "> ?\tdev->functionality =\n" + "> ?\t\tI2C_FUNC_I2C |\n" "> @@ -270,10 +280,18 @@ static int dw_i2c_plat_probe(struct\n" "> platform_device *pdev)\n" - "> \302\240\t}\n" - "> \302\240\n" - "> \302\240\tr = i2c_dw_probe(dev);\n" + "> ?\t}\n" + "> ?\n" + "> ?\tr = i2c_dw_probe(dev);\n" "> -\tif (r && !dev->pm_runtime_disabled)\n" "> -\t\tpm_runtime_disable(&pdev->dev);\n" "> +\tif (r)\n" "> +\t\tgoto exit_probe;\n" - "> \302\240\n" - "> \302\240\treturn r;\n" + "> ?\n" + "> ?\treturn r;\n" "> +\n" "> +exit_probe:\n" "> +\tif (!dev->pm_runtime_disabled)\n" @@ -108,22 +103,22 @@ "> +\tif (!IS_ERR_OR_NULL(dev->rst))\n" "> +\t\treset_control_assert(dev->rst);\n" "> +\treturn r;\n" - "> \302\240}\n" - "> \302\240\n" - "> \302\240static int dw_i2c_plat_remove(struct platform_device *pdev)\n" + "> ?}\n" + "> ?\n" + "> ?static int dw_i2c_plat_remove(struct platform_device *pdev)\n" "> @@ -290,6 +308,8 @@ static int dw_i2c_plat_remove(struct\n" "> platform_device *pdev)\n" - "> \302\240\tpm_runtime_put_sync(&pdev->dev);\n" - "> \302\240\tif (!dev->pm_runtime_disabled)\n" - "> \302\240\t\tpm_runtime_disable(&pdev->dev);\n" + "> ?\tpm_runtime_put_sync(&pdev->dev);\n" + "> ?\tif (!dev->pm_runtime_disabled)\n" + "> ?\t\tpm_runtime_disable(&pdev->dev);\n" "> +\tif (!IS_ERR_OR_NULL(dev->rst))\n" "> +\t\treset_control_assert(dev->rst);\n" - "> \302\240\n" - "> \302\240\treturn 0;\n" - "> \302\240}\n" + "> ?\n" + "> ?\treturn 0;\n" + "> ?}\n" "\n" "-- \n" "Andy Shevchenko <andriy.shevchenko@linux.intel.com>\n" Intel Finland Oy -de389cb500b275a2cacd9f313b7eb820280c515966061be169ccd3c4960b4042 +82eac631760f171b4e4bfc7187dfc64fe43c6f9e0d6c9383700862f98529ac7f
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.