Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/patches/807426/?format=api
{ "id": 807426, "url": "http://patchwork.ozlabs.org/api/patches/807426/?format=api", "web_url": "http://patchwork.ozlabs.org/project/linux-i2c/patch/1504073857-122449-2-git-send-email-preid@electromag.com.au/", "project": { "id": 35, "url": "http://patchwork.ozlabs.org/api/projects/35/?format=api", "name": "Linux I2C development", "link_name": "linux-i2c", "list_id": "linux-i2c.vger.kernel.org", "list_email": "linux-i2c@vger.kernel.org", "web_url": "", "scm_url": "", "webscm_url": "", "list_archive_url": "", "list_archive_url_format": "", "commit_url_format": "" }, "msgid": "<1504073857-122449-2-git-send-email-preid@electromag.com.au>", "list_archive_url": null, "date": "2017-08-30T06:17:34", "name": "[v3,1/4] i2c: Switch to using gpiod interface for gpio bus recovery", "commit_ref": null, "pull_url": null, "state": "changes-requested", "archived": false, "hash": "a2a1500a76c40bc4e9962905d632fdca44ebb293", "submitter": { "id": 66145, "url": "http://patchwork.ozlabs.org/api/people/66145/?format=api", "name": "Phil Reid", "email": "preid@electromag.com.au" }, "delegate": null, "mbox": "http://patchwork.ozlabs.org/project/linux-i2c/patch/1504073857-122449-2-git-send-email-preid@electromag.com.au/mbox/", "series": [ { "id": 531, "url": "http://patchwork.ozlabs.org/api/series/531/?format=api", "web_url": "http://patchwork.ozlabs.org/project/linux-i2c/list/?series=531", "date": "2017-08-30T06:17:35", "name": "i2c: designware: add i2c gpio recovery option", "version": 3, "mbox": "http://patchwork.ozlabs.org/series/531/mbox/" } ], "comments": "http://patchwork.ozlabs.org/api/patches/807426/comments/", "check": "pending", "checks": "http://patchwork.ozlabs.org/api/patches/807426/checks/", "tags": {}, "related": [], "headers": { "Return-Path": "<linux-i2c-owner@vger.kernel.org>", "X-Original-To": "incoming@patchwork.ozlabs.org", "Delivered-To": "patchwork-incoming@bilbo.ozlabs.org", "Authentication-Results": "ozlabs.org;\n\tspf=none (mailfrom) smtp.mailfrom=vger.kernel.org\n\t(client-ip=209.132.180.67; helo=vger.kernel.org;\n\tenvelope-from=linux-i2c-owner@vger.kernel.org;\n\treceiver=<UNKNOWN>)", "Received": [ "from vger.kernel.org (vger.kernel.org [209.132.180.67])\n\tby ozlabs.org (Postfix) with ESMTP id 3xhwKT1vhGz9t16\n\tfor <incoming@patchwork.ozlabs.org>;\n\tWed, 30 Aug 2017 16:17:49 +1000 (AEST)", "(majordomo@vger.kernel.org) by vger.kernel.org via listexpand\n\tid S1750835AbdH3GRq (ORCPT <rfc822;incoming@patchwork.ozlabs.org>);\n\tWed, 30 Aug 2017 02:17:46 -0400", "from anchovy2.45ru.net.au ([203.30.46.146]:47402 \"EHLO\n\tanchovy.45ru.net.au\" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org\n\twith ESMTP id S1750814AbdH3GRp (ORCPT\n\t<rfc822; linux-i2c@vger.kernel.org>); Wed, 30 Aug 2017 02:17:45 -0400", "(qmail 10651 invoked by uid 5089); 30 Aug 2017 06:17:42 -0000", "by simscan 1.2.0 ppid: 10547, pid: 10550, t: 0.0972s\n\tscanners: regex: 1.2.0 attach: 1.2.0 clamav: 0.88.3/m:40/d:1950", "from unknown (HELO preid-centos7.electromag.com.au)\n\t(preid@electromag.com.au@203.59.230.133)\n\tby anchovy3.45ru.net.au with ESMTPA; 30 Aug 2017 06:17:41 -0000", "by preid-centos7.electromag.com.au (Postfix, from userid 1000)\n\tid 31A4E301EBA89; Wed, 30 Aug 2017 14:17:40 +0800 (AWST)" ], "X-RBL": "$rbltext", "From": "Phil Reid <preid@electromag.com.au>", "To": "jarkko.nikula@linux.intel.com, andriy.shevchenko@linux.intel.com,\n\tmika.westerberg@linux.intel.com, wsa@the-dreams.de,\n\ttim@krieglstein.org, preid@electromag.com.au, linux-i2c@vger.kernel.org", "Subject": "[PATCH v3 1/4] i2c: Switch to using gpiod interface for gpio bus\n\trecovery", "Date": "Wed, 30 Aug 2017 14:17:34 +0800", "Message-Id": "<1504073857-122449-2-git-send-email-preid@electromag.com.au>", "X-Mailer": "git-send-email 1.8.3.1", "In-Reply-To": "<1504073857-122449-1-git-send-email-preid@electromag.com.au>", "References": "<1504073857-122449-1-git-send-email-preid@electromag.com.au>", "Sender": "linux-i2c-owner@vger.kernel.org", "Precedence": "bulk", "List-ID": "<linux-i2c.vger.kernel.org>", "X-Mailing-List": "linux-i2c@vger.kernel.org" }, "content": "Currently the i2c gpio recovery code uses gpio integer interface\ninstead of the gpiod. This change switch the core code to use\nthe gpiod while still retaining compatibility with the gpio integer\ninterface. This will allow individual driver to be updated and tested\nindividual to switch to using the gpiod interface.\n\nSigned-off-by: Phil Reid <preid@electromag.com.au>\n---\n drivers/i2c/i2c-core-base.c | 22 ++++++++++++++++++----\n include/linux/i2c.h | 2 ++\n 2 files changed, 20 insertions(+), 4 deletions(-)", "diff": "diff --git a/drivers/i2c/i2c-core-base.c b/drivers/i2c/i2c-core-base.c\nindex 56e4658..3f54e25 100644\n--- a/drivers/i2c/i2c-core-base.c\n+++ b/drivers/i2c/i2c-core-base.c\n@@ -133,17 +133,17 @@ static int i2c_device_uevent(struct device *dev, struct kobj_uevent_env *env)\n /* i2c bus recovery routines */\n static int get_scl_gpio_value(struct i2c_adapter *adap)\n {\n-\treturn gpio_get_value(adap->bus_recovery_info->scl_gpio);\n+\treturn gpiod_get_value_cansleep(adap->bus_recovery_info->scl_gpiod);\n }\n \n static void set_scl_gpio_value(struct i2c_adapter *adap, int val)\n {\n-\tgpio_set_value(adap->bus_recovery_info->scl_gpio, val);\n+\tgpiod_set_value_cansleep(adap->bus_recovery_info->scl_gpiod, val);\n }\n \n static int get_sda_gpio_value(struct i2c_adapter *adap)\n {\n-\treturn gpio_get_value(adap->bus_recovery_info->sda_gpio);\n+\treturn gpiod_get_value_cansleep(adap->bus_recovery_info->sda_gpiod);\n }\n \n static int i2c_get_gpios_for_recovery(struct i2c_adapter *adap)\n@@ -158,6 +158,7 @@ static int i2c_get_gpios_for_recovery(struct i2c_adapter *adap)\n \t\tdev_warn(dev, \"Can't get SCL gpio: %d\\n\", bri->scl_gpio);\n \t\treturn ret;\n \t}\n+\tbri->scl_gpiod = gpio_to_desc(bri->scl_gpio);\n \n \tif (bri->get_sda) {\n \t\tif (gpio_request_one(bri->sda_gpio, GPIOF_IN, \"i2c-sda\")) {\n@@ -167,6 +168,7 @@ static int i2c_get_gpios_for_recovery(struct i2c_adapter *adap)\n \t\t\tbri->get_sda = NULL;\n \t\t}\n \t}\n+\tbri->sda_gpiod = gpio_to_desc(bri->sda_gpio);\n \n \treturn ret;\n }\n@@ -175,10 +177,13 @@ static void i2c_put_gpios_for_recovery(struct i2c_adapter *adap)\n {\n \tstruct i2c_bus_recovery_info *bri = adap->bus_recovery_info;\n \n-\tif (bri->get_sda)\n+\tif (bri->get_sda) {\n \t\tgpio_free(bri->sda_gpio);\n+\t\tbri->sda_gpiod = NULL;\n+\t}\n \n \tgpio_free(bri->scl_gpio);\n+\tbri->scl_gpiod = NULL;\n }\n \n /*\n@@ -272,6 +277,15 @@ static void i2c_init_recovery(struct i2c_adapter *adap)\n \t\tgoto err;\n \t}\n \n+\tif ((bri->scl_gpiod) &&\n+\t (bri->recover_bus == i2c_generic_scl_recovery)) {\n+\t\tbri->get_scl = get_scl_gpio_value;\n+\t\tbri->set_scl = set_scl_gpio_value;\n+\t\tif (bri->sda_gpiod)\n+\t\t\tbri->get_sda = get_sda_gpio_value;\n+\t\treturn;\n+\t}\n+\n \t/* Generic GPIO recovery */\n \tif (bri->recover_bus == i2c_generic_gpio_recovery) {\n \t\tif (!gpio_is_valid(bri->scl_gpio)) {\ndiff --git a/include/linux/i2c.h b/include/linux/i2c.h\nindex d501d39..7ad68a1 100644\n--- a/include/linux/i2c.h\n+++ b/include/linux/i2c.h\n@@ -511,6 +511,8 @@ struct i2c_bus_recovery_info {\n \t/* gpio recovery */\n \tint scl_gpio;\n \tint sda_gpio;\n+\tstruct gpio_desc *scl_gpiod;\n+\tstruct gpio_desc *sda_gpiod;\n };\n \n int i2c_recover_bus(struct i2c_adapter *adap);\n", "prefixes": [ "v3", "1/4" ] }