get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

GET /api/patches/810584/?format=api
HTTP 200 OK
Allow: GET, PUT, PATCH, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "id": 810584,
    "url": "http://patchwork.ozlabs.org/api/patches/810584/?format=api",
    "web_url": "http://patchwork.ozlabs.org/project/linux-gpio/patch/1504704043-8052-13-git-send-email-rf@opensource.wolfsonmicro.com/",
    "project": {
        "id": 42,
        "url": "http://patchwork.ozlabs.org/api/projects/42/?format=api",
        "name": "Linux GPIO development",
        "link_name": "linux-gpio",
        "list_id": "linux-gpio.vger.kernel.org",
        "list_email": "linux-gpio@vger.kernel.org",
        "web_url": "",
        "scm_url": "",
        "webscm_url": "",
        "list_archive_url": "",
        "list_archive_url_format": "",
        "commit_url_format": ""
    },
    "msgid": "<1504704043-8052-13-git-send-email-rf@opensource.wolfsonmicro.com>",
    "list_archive_url": null,
    "date": "2017-09-06T13:20:38",
    "name": "[v5,12/17] gpio: madera: Support Cirrus Logic Madera class codecs",
    "commit_ref": null,
    "pull_url": null,
    "state": "new",
    "archived": false,
    "hash": "464164b72ccbc222f2c5865aef41ba0b93719dde",
    "submitter": {
        "id": 65141,
        "url": "http://patchwork.ozlabs.org/api/people/65141/?format=api",
        "name": "Richard Fitzgerald",
        "email": "rf@opensource.wolfsonmicro.com"
    },
    "delegate": null,
    "mbox": "http://patchwork.ozlabs.org/project/linux-gpio/patch/1504704043-8052-13-git-send-email-rf@opensource.wolfsonmicro.com/mbox/",
    "series": [
        {
            "id": 1804,
            "url": "http://patchwork.ozlabs.org/api/series/1804/?format=api",
            "web_url": "http://patchwork.ozlabs.org/project/linux-gpio/list/?series=1804",
            "date": "2017-09-06T13:20:36",
            "name": "Add support for Cirrus Logic CS47L35/L85/L90/L91 codecs",
            "version": 5,
            "mbox": "http://patchwork.ozlabs.org/series/1804/mbox/"
        }
    ],
    "comments": "http://patchwork.ozlabs.org/api/patches/810584/comments/",
    "check": "pending",
    "checks": "http://patchwork.ozlabs.org/api/patches/810584/checks/",
    "tags": {},
    "related": [],
    "headers": {
        "Return-Path": "<linux-gpio-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-gpio-owner@vger.kernel.org;\n\treceiver=<UNKNOWN>)",
            "ppops.net;\n\tspf=none smtp.mailfrom=rf@opensource.wolfsonmicro.com"
        ],
        "Received": [
            "from vger.kernel.org (vger.kernel.org [209.132.180.67])\n\tby ozlabs.org (Postfix) with ESMTP id 3xnPNr3vCQz9t43\n\tfor <incoming@patchwork.ozlabs.org>;\n\tWed,  6 Sep 2017 23:21:16 +1000 (AEST)",
            "(majordomo@vger.kernel.org) by vger.kernel.org via listexpand\n\tid S1754624AbdIFNVN (ORCPT <rfc822;incoming@patchwork.ozlabs.org>);\n\tWed, 6 Sep 2017 09:21:13 -0400",
            "from mx0b-001ae601.pphosted.com ([67.231.152.168]:42762 \"EHLO\n\tmx0b-001ae601.pphosted.com\" rhost-flags-OK-OK-OK-OK)\n\tby vger.kernel.org with ESMTP id S1754565AbdIFNU7 (ORCPT\n\t<rfc822; linux-gpio@vger.kernel.org>); Wed, 6 Sep 2017 09:20:59 -0400",
            "from pps.filterd (m0077474.ppops.net [127.0.0.1])\n\tby mx0b-001ae601.pphosted.com (8.16.0.21/8.16.0.21) with SMTP id\n\tv86DJiKC029112; Wed, 6 Sep 2017 08:20:48 -0500",
            "from mail4.cirrus.com ([87.246.98.35])\n\tby mx0b-001ae601.pphosted.com with ESMTP id 2cqs2mav6d-1;\n\tWed, 06 Sep 2017 08:20:47 -0500",
            "from EX17.ad.cirrus.com (unknown [172.20.9.81])\n\tby mail4.cirrus.com (Postfix) with ESMTP id 94F31611CE89;\n\tWed,  6 Sep 2017 08:20:44 -0500 (CDT)",
            "from imbe.wolfsonmicro.main (198.61.95.81) by EX17.ad.cirrus.com\n\t(172.20.9.81) with Microsoft SMTP Server id 14.3.301.0;\n\tWed, 6 Sep 2017 14:20:44 +0100",
            "from rf-debian.ad.cirrus.com (rf-debian.ad.cirrus.com\n\t[198.90.223.45]) by imbe.wolfsonmicro.main (8.14.4/8.14.4) with ESMTP\n\tid v86DKhDW032150;        Wed, 6 Sep 2017 14:20:44 +0100"
        ],
        "From": "Richard Fitzgerald <rf@opensource.wolfsonmicro.com>",
        "To": "<lee.jones@linaro.org>, <broonie@kernel.org>,\n\t<linus.walleij@linaro.org>, <gnurou@gmail.com>,\n\t<robh+dt@kernel.org>, <tglx@linutronix.de>, <jason@lakedaemon.net>",
        "CC": "<alsa-devel@alsa-project.org>, <patches@opensource.wolfsonmicro.com>,\n\t<linux-gpio@vger.kernel.org>, <devicetree@vger.kernel.org>,\n\t<linux-kernel@vger.kernel.org>",
        "Subject": "[PATCH v5 12/17] gpio: madera: Support Cirrus Logic Madera class\n\tcodecs",
        "Date": "Wed, 6 Sep 2017 14:20:38 +0100",
        "Message-ID": "<1504704043-8052-13-git-send-email-rf@opensource.wolfsonmicro.com>",
        "X-Mailer": "git-send-email 1.9.1",
        "In-Reply-To": "<1504704043-8052-1-git-send-email-rf@opensource.wolfsonmicro.com>",
        "References": "<1504704043-8052-1-git-send-email-rf@opensource.wolfsonmicro.com>",
        "MIME-Version": "1.0",
        "Content-Type": "text/plain",
        "X-Proofpoint-Spam-Details": "rule=notspam policy=default score=0\n\tpriorityscore=1501 malwarescore=0\n\tsuspectscore=2 phishscore=0 bulkscore=0 spamscore=0 clxscore=1015\n\tlowpriorityscore=0 impostorscore=0 adultscore=0 classifier=spam\n\tadjust=0\n\treason=mlx scancount=1 engine=8.0.1-1707230000\n\tdefinitions=main-1709060186",
        "Sender": "linux-gpio-owner@vger.kernel.org",
        "Precedence": "bulk",
        "List-ID": "<linux-gpio.vger.kernel.org>",
        "X-Mailing-List": "linux-gpio@vger.kernel.org"
    },
    "content": "This adds support for the GPIOs on Cirrus Logic Madera class codecs.\nAny pins not used for special functions (see the pinctrl driver) can be\nused as general single-bit input or output lines. The number of available\nGPIOs varies between codecs.\n\nSigned-off-by: Nariman Poushin <nariman@opensource.wolfsonmicro.com>\nSigned-off-by: Richard Fitzgerald <rf@opensource.wolfsonmicro.com>\nSigned-off-by: Charles Keepax <ckeepax@opensource.wolfsonmicro.com>\nAcked-by: Linus Walleij <linus.walleij@linaro.org>\n---\n MAINTAINERS                |   1 +\n drivers/gpio/Kconfig       |   6 ++\n drivers/gpio/Makefile      |   1 +\n drivers/gpio/gpio-madera.c | 196 +++++++++++++++++++++++++++++++++++++++++++++\n 4 files changed, 204 insertions(+)\n create mode 100644 drivers/gpio/gpio-madera.c",
    "diff": "diff --git a/MAINTAINERS b/MAINTAINERS\nindex 9d75ab6..94fc0bd 100644\n--- a/MAINTAINERS\n+++ b/MAINTAINERS\n@@ -3429,6 +3429,7 @@ F:\tDocumentation/devicetree/bindings/mfd/madera.txt\n F:\tDocumentation/devicetree/bindings/pinctrl/cirrus,madera-pinctrl.txt\n F:\tinclude/linux/irqchip/irq-madera*\n F:\tinclude/linux/mfd/madera/*\n+F:\tdrivers/gpio/gpio-madera*\n F:\tdrivers/irqchip/irq-madera*\n F:\tdrivers/mfd/madera*\n F:\tdrivers/mfd/cs47l*\ndiff --git a/drivers/gpio/Kconfig b/drivers/gpio/Kconfig\nindex 3388d54..d072b30 100644\n--- a/drivers/gpio/Kconfig\n+++ b/drivers/gpio/Kconfig\n@@ -985,6 +985,12 @@ config GPIO_LP87565\n \t  This driver can also be built as a module. If so, the module will be\n \t  called gpio-lp87565.\n \n+config GPIO_MADERA\n+\tbool \"Cirrus Logic Madera class codecs\"\n+\tdepends on PINCTRL_MADERA\n+\thelp\n+\t  Support for GPIOs on Cirrus Logic Madera class codecs.\n+\n config GPIO_MAX77620\n \ttristate \"GPIO support for PMIC MAX77620 and MAX20024\"\n \tdepends on MFD_MAX77620\ndiff --git a/drivers/gpio/Makefile b/drivers/gpio/Makefile\nindex aeb70e9d..a171dc7 100644\n--- a/drivers/gpio/Makefile\n+++ b/drivers/gpio/Makefile\n@@ -69,6 +69,7 @@ obj-$(CONFIG_ARCH_LPC32XX)\t+= gpio-lpc32xx.o\n obj-$(CONFIG_GPIO_LP873X)\t+= gpio-lp873x.o\n obj-$(CONFIG_GPIO_LP87565)\t+= gpio-lp87565.o\n obj-$(CONFIG_GPIO_LYNXPOINT)\t+= gpio-lynxpoint.o\n+obj-$(CONFIG_GPIO_MADERA)\t+= gpio-madera.o\n obj-$(CONFIG_GPIO_MAX730X)\t+= gpio-max730x.o\n obj-$(CONFIG_GPIO_MAX7300)\t+= gpio-max7300.o\n obj-$(CONFIG_GPIO_MAX7301)\t+= gpio-max7301.o\ndiff --git a/drivers/gpio/gpio-madera.c b/drivers/gpio/gpio-madera.c\nnew file mode 100644\nindex 0000000..e45905d5\n--- /dev/null\n+++ b/drivers/gpio/gpio-madera.c\n@@ -0,0 +1,196 @@\n+/*\n+ * GPIO support for Cirrus Logic Madera codecs\n+ *\n+ * Copyright 2015-2017 Cirrus Logic\n+ *\n+ * This program is free software; you can redistribute it and/or modify\n+ * it under the terms of the GNU General Public License version 2 as\n+ * published by the Free Software Foundation.\n+ */\n+\n+#include <linux/device.h>\n+#include <linux/gpio.h>\n+#include <linux/kernel.h>\n+#include <linux/module.h>\n+#include <linux/platform_device.h>\n+\n+#include <linux/mfd/madera/core.h>\n+#include <linux/mfd/madera/pdata.h>\n+#include <linux/mfd/madera/registers.h>\n+\n+struct madera_gpio {\n+\tstruct madera *madera;\n+\tstruct gpio_chip gpio_chip;\n+};\n+\n+static int madera_gpio_get_direction(struct gpio_chip *chip,\n+\t\t\t\t     unsigned int offset)\n+{\n+\tstruct madera_gpio *madera_gpio = gpiochip_get_data(chip);\n+\tstruct madera *madera = madera_gpio->madera;\n+\tunsigned int val;\n+\tint ret;\n+\n+\tret = regmap_read(madera->regmap,\n+\t\t\t  MADERA_GPIO1_CTRL_2 + (2 * offset), &val);\n+\tif (ret < 0)\n+\t\treturn ret;\n+\n+\treturn (val & MADERA_GP1_DIR_MASK) >> MADERA_GP1_DIR_SHIFT;\n+}\n+\n+static int madera_gpio_direction_in(struct gpio_chip *chip, unsigned int offset)\n+{\n+\tstruct madera_gpio *madera_gpio = gpiochip_get_data(chip);\n+\tstruct madera *madera = madera_gpio->madera;\n+\n+\treturn regmap_update_bits(madera->regmap,\n+\t\t\t\t  MADERA_GPIO1_CTRL_2 + (2 * offset),\n+\t\t\t\t  MADERA_GP1_DIR_MASK, MADERA_GP1_DIR);\n+}\n+\n+static int madera_gpio_get(struct gpio_chip *chip, unsigned int offset)\n+{\n+\tstruct madera_gpio *madera_gpio = gpiochip_get_data(chip);\n+\tstruct madera *madera = madera_gpio->madera;\n+\tunsigned int val;\n+\tint ret;\n+\n+\tret = regmap_read(madera->regmap,\n+\t\t\t  MADERA_GPIO1_CTRL_1 + (2 * offset), &val);\n+\tif (ret < 0)\n+\t\treturn ret;\n+\n+\treturn !!(val & MADERA_GP1_LVL_MASK);\n+}\n+\n+static int madera_gpio_direction_out(struct gpio_chip *chip,\n+\t\t\t\t     unsigned int offset, int value)\n+{\n+\tstruct madera_gpio *madera_gpio = gpiochip_get_data(chip);\n+\tstruct madera *madera = madera_gpio->madera;\n+\tunsigned int regval;\n+\tint ret;\n+\n+\tif (value)\n+\t\tregval = MADERA_GP1_LVL;\n+\telse\n+\t\tregval = 0;\n+\n+\tret = regmap_update_bits(madera->regmap,\n+\t\t\t\t MADERA_GPIO1_CTRL_2 + (2 * offset),\n+\t\t\t\t MADERA_GP1_DIR_MASK, 0);\n+\tif (ret < 0)\n+\t\treturn ret;\n+\n+\treturn regmap_update_bits(madera->regmap,\n+\t\t\t\t  MADERA_GPIO1_CTRL_1 + (2 * offset),\n+\t\t\t\t  MADERA_GP1_LVL_MASK, regval);\n+}\n+\n+static void madera_gpio_set(struct gpio_chip *chip, unsigned int offset,\n+\t\t\t    int value)\n+{\n+\tstruct madera_gpio *madera_gpio = gpiochip_get_data(chip);\n+\tstruct madera *madera = madera_gpio->madera;\n+\tunsigned int regval;\n+\tint ret;\n+\n+\tif (value)\n+\t\tregval = MADERA_GP1_LVL;\n+\telse\n+\t\tregval = 0;\n+\n+\tret = regmap_update_bits(madera->regmap,\n+\t\t\t\t MADERA_GPIO1_CTRL_1 + (2 * offset),\n+\t\t\t\t MADERA_GP1_LVL_MASK, regval);\n+\tif (ret)\n+\t\tdev_warn(madera->dev, \"Failed to write to 0x%x (%d)\\n\",\n+\t\t\t MADERA_GPIO1_CTRL_1 + (2 * offset), ret);\n+}\n+\n+static struct gpio_chip template_chip = {\n+\t.label\t\t\t= \"madera\",\n+\t.owner\t\t\t= THIS_MODULE,\n+\t.request\t\t= gpiochip_generic_request,\n+\t.free\t\t\t= gpiochip_generic_free,\n+\t.get_direction\t\t= madera_gpio_get_direction,\n+\t.direction_input\t= madera_gpio_direction_in,\n+\t.get\t\t\t= madera_gpio_get,\n+\t.direction_output\t= madera_gpio_direction_out,\n+\t.set\t\t\t= madera_gpio_set,\n+\t.set_config\t\t= gpiochip_generic_config,\n+\t.can_sleep\t\t= true,\n+};\n+\n+static int madera_gpio_probe(struct platform_device *pdev)\n+{\n+\tstruct madera *madera = dev_get_drvdata(pdev->dev.parent);\n+\tstruct madera_pdata *pdata = dev_get_platdata(madera->dev);\n+\tstruct madera_gpio *madera_gpio;\n+\tint ret;\n+\n+\tmadera_gpio = devm_kzalloc(&pdev->dev, sizeof(*madera_gpio),\n+\t\t\t\t   GFP_KERNEL);\n+\tif (!madera_gpio)\n+\t\treturn -ENOMEM;\n+\n+\tmadera_gpio->madera = madera;\n+\tmadera_gpio->gpio_chip = template_chip;\n+\tmadera_gpio->gpio_chip.parent = &pdev->dev;\n+\n+\tif (IS_ENABLED(CONFIG_OF_GPIO))\n+\t\tmadera_gpio->gpio_chip.of_node = madera->dev->of_node;\n+\n+\tswitch (madera->type) {\n+\tcase CS47L35:\n+\t\tmadera_gpio->gpio_chip.ngpio = CS47L35_NUM_GPIOS;\n+\t\tbreak;\n+\tcase CS47L85:\n+\tcase WM1840:\n+\t\tmadera_gpio->gpio_chip.ngpio = CS47L85_NUM_GPIOS;\n+\t\tbreak;\n+\tcase CS47L90:\n+\tcase CS47L91:\n+\t\tmadera_gpio->gpio_chip.ngpio = CS47L90_NUM_GPIOS;\n+\t\tbreak;\n+\tdefault:\n+\t\tdev_err(&pdev->dev, \"Unknown chip variant %d\\n\", madera->type);\n+\t\treturn -EINVAL;\n+\t}\n+\n+\tif (pdata && pdata->gpio_base)\n+\t\tmadera_gpio->gpio_chip.base = pdata->gpio_base;\n+\telse\n+\t\tmadera_gpio->gpio_chip.base = -1;\n+\n+\tret = devm_gpiochip_add_data(&pdev->dev, &madera_gpio->gpio_chip,\n+\t\t\t\t     madera_gpio);\n+\tif (ret < 0) {\n+\t\tdev_err(&pdev->dev, \"Could not register gpiochip, %d\\n\", ret);\n+\t\treturn ret;\n+\t}\n+\n+\tret = gpiochip_add_pin_range(&madera_gpio->gpio_chip, \"madera-pinctrl\",\n+\t\t\t\t     0, 0, madera_gpio->gpio_chip.ngpio);\n+\tif (ret) {\n+\t\tdev_warn(&pdev->dev, \"Failed to add pin range (%d)\\n\", ret);\n+\t\treturn ret;\n+\t}\n+\n+\treturn 0;\n+}\n+\n+static struct platform_driver madera_gpio_driver = {\n+\t.driver.name\t= \"madera-gpio\",\n+\t.driver.owner\t= THIS_MODULE,\n+\t.probe\t\t= madera_gpio_probe,\n+};\n+\n+module_platform_driver(madera_gpio_driver);\n+\n+MODULE_DESCRIPTION(\"GPIO interface for Madera codecs\");\n+MODULE_AUTHOR(\"Nariman Poushin <nariman@opensource.wolfsonmicro.com>\");\n+MODULE_AUTHOR(\"Richard Fitzgerald <rf@opensource.wolfsonmicro.com>\");\n+MODULE_LICENSE(\"GPL v2\");\n+MODULE_ALIAS(\"platform:madera-gpio\");\n",
    "prefixes": [
        "v5",
        "12/17"
    ]
}