get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 831128,
    "url": "http://patchwork.ozlabs.org/api/1.2/patches/831128/?format=api",
    "web_url": "http://patchwork.ozlabs.org/project/linux-pci/patch/20171027072612.26565-6-jeffy.chen@rock-chips.com/",
    "project": {
        "id": 28,
        "url": "http://patchwork.ozlabs.org/api/1.2/projects/28/?format=api",
        "name": "Linux PCI development",
        "link_name": "linux-pci",
        "list_id": "linux-pci.vger.kernel.org",
        "list_email": "linux-pci@vger.kernel.org",
        "web_url": null,
        "scm_url": null,
        "webscm_url": null,
        "list_archive_url": "",
        "list_archive_url_format": "",
        "commit_url_format": ""
    },
    "msgid": "<20171027072612.26565-6-jeffy.chen@rock-chips.com>",
    "list_archive_url": null,
    "date": "2017-10-27T07:26:10",
    "name": "[RFC,v10,5/7] PCI: Make pci_platform_pm_ops's callbacks optional",
    "commit_ref": null,
    "pull_url": null,
    "state": "not-applicable",
    "archived": false,
    "hash": "e37c01c43e71a2c5fdcfc55ce3976f6abdccc698",
    "submitter": {
        "id": 67754,
        "url": "http://patchwork.ozlabs.org/api/1.2/people/67754/?format=api",
        "name": "Jeffy Chen",
        "email": "jeffy.chen@rock-chips.com"
    },
    "delegate": null,
    "mbox": "http://patchwork.ozlabs.org/project/linux-pci/patch/20171027072612.26565-6-jeffy.chen@rock-chips.com/mbox/",
    "series": [
        {
            "id": 10523,
            "url": "http://patchwork.ozlabs.org/api/1.2/series/10523/?format=api",
            "web_url": "http://patchwork.ozlabs.org/project/linux-pci/list/?series=10523",
            "date": "2017-10-27T07:26:06",
            "name": "PCI: rockchip: Move PCIe WAKE# handling into pci core",
            "version": 10,
            "mbox": "http://patchwork.ozlabs.org/series/10523/mbox/"
        }
    ],
    "comments": "http://patchwork.ozlabs.org/api/patches/831128/comments/",
    "check": "pending",
    "checks": "http://patchwork.ozlabs.org/api/patches/831128/checks/",
    "tags": {},
    "related": [],
    "headers": {
        "Return-Path": "<linux-pci-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-pci-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 3yNb700Cxsz9t34\n\tfor <incoming@patchwork.ozlabs.org>;\n\tFri, 27 Oct 2017 18:27:24 +1100 (AEDT)",
            "(majordomo@vger.kernel.org) by vger.kernel.org via listexpand\n\tid S1751530AbdJ0H1V (ORCPT <rfc822;incoming@patchwork.ozlabs.org>);\n\tFri, 27 Oct 2017 03:27:21 -0400",
            "from regular1.263xmail.com ([211.150.99.136]:42223 \"EHLO\n\tregular1.263xmail.com\" rhost-flags-OK-OK-OK-OK) by vger.kernel.org\n\twith ESMTP id S1751072AbdJ0H1T (ORCPT\n\t<rfc822; linux-pci@vger.kernel.org>); Fri, 27 Oct 2017 03:27:19 -0400",
            "from jeffy.chen?rock-chips.com (unknown [192.168.167.243])\n\tby regular1.263xmail.com (Postfix) with ESMTP id EE4DB5D;\n\tFri, 27 Oct 2017 15:27:16 +0800 (CST)",
            "from localhost (localhost [127.0.0.1])\n\tby smtp.263.net (Postfix) with ESMTPA id 129A7399;\n\tFri, 27 Oct 2017 15:27:04 +0800 (CST)",
            "from localhost (unknown [103.29.142.67])\n\tby smtp.263.net (Postfix) whith ESMTP id 27511MBL0F1;\n\tFri, 27 Oct 2017 15:27:14 +0800 (CST)"
        ],
        "X-263anti-spam": "KSV:0;",
        "X-MAIL-GRAY": "0",
        "X-MAIL-DELIVERY": "1",
        "X-KSVirus-check": "0",
        "X-ABS-CHECKED": "4",
        "X-RL-SENDER": "jeffy.chen@rock-chips.com",
        "X-FST-TO": "linux-kernel@vger.kernel.org",
        "X-SENDER-IP": "103.29.142.67",
        "X-LOGIN-NAME": "jeffy.chen@rock-chips.com",
        "X-UNIQUE-TAG": "<f18191cd199be1460ebc37e6f94d652c>",
        "X-ATTACHMENT-NUM": "0",
        "X-SENDER": "cjf@rock-chips.com",
        "X-DNS-TYPE": "0",
        "From": "Jeffy Chen <jeffy.chen@rock-chips.com>",
        "To": "linux-kernel@vger.kernel.org, bhelgaas@google.com",
        "Cc": "linux-pm@vger.kernel.org, tony@atomide.com,\n\tshawn.lin@rock-chips.com, briannorris@chromium.org,\n\trjw@rjwysocki.net, dianders@chromium.org,\n\tJeffy Chen <jeffy.chen@rock-chips.com>, linux-pci@vger.kernel.org",
        "Subject": "[RFC PATCH v10 5/7] PCI: Make pci_platform_pm_ops's callbacks\n\toptional",
        "Date": "Fri, 27 Oct 2017 15:26:10 +0800",
        "Message-Id": "<20171027072612.26565-6-jeffy.chen@rock-chips.com>",
        "X-Mailer": "git-send-email 2.11.0",
        "In-Reply-To": "<20171027072612.26565-1-jeffy.chen@rock-chips.com>",
        "References": "<20171027072612.26565-1-jeffy.chen@rock-chips.com>",
        "Sender": "linux-pci-owner@vger.kernel.org",
        "Precedence": "bulk",
        "List-ID": "<linux-pci.vger.kernel.org>",
        "X-Mailing-List": "linux-pci@vger.kernel.org"
    },
    "content": "Allow platforms not to provide some of the pci_platform_pm_ops's\ncallbacks.\n\nAlso change the return value from -ENOSYS to -ENODEV for:\nwarning: drivers/pci/pci.c,594: ENOSYS means 'invalid syscall nr' and nothing else\n\nSigned-off-by: Jeffy Chen <jeffy.chen@rock-chips.com>\n---\n\nChanges in v10: None\nChanges in v9: None\nChanges in v8: None\nChanges in v7: None\nChanges in v6: None\nChanges in v5: None\nChanges in v3: None\nChanges in v2: None\n\n drivers/pci/pci.c | 38 +++++++++++++++++++++++++-------------\n drivers/pci/pci.h |  5 +----\n 2 files changed, 26 insertions(+), 17 deletions(-)",
    "diff": "diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c\nindex f0d68066c726..e120b00a9017 100644\n--- a/drivers/pci/pci.c\n+++ b/drivers/pci/pci.c\n@@ -572,46 +572,58 @@ static void pci_restore_bars(struct pci_dev *dev)\n \n static const struct pci_platform_pm_ops *pci_platform_pm;\n \n-int pci_set_platform_pm(const struct pci_platform_pm_ops *ops)\n+void pci_set_platform_pm(const struct pci_platform_pm_ops *ops)\n {\n-\tif (!ops->is_manageable || !ops->set_state  || !ops->get_state ||\n-\t    !ops->choose_state  || !ops->set_wakeup || !ops->need_resume)\n-\t\treturn -EINVAL;\n \tpci_platform_pm = ops;\n-\treturn 0;\n }\n \n static inline bool platform_pci_power_manageable(struct pci_dev *dev)\n {\n-\treturn pci_platform_pm ? pci_platform_pm->is_manageable(dev) : false;\n+\tif (pci_platform_pm && pci_platform_pm->is_manageable)\n+\t\treturn pci_platform_pm->is_manageable(dev);\n+\n+\treturn false;\n }\n \n static inline int platform_pci_set_power_state(struct pci_dev *dev,\n \t\t\t\t\t       pci_power_t t)\n {\n-\treturn pci_platform_pm ? pci_platform_pm->set_state(dev, t) : -ENOSYS;\n+\tif (pci_platform_pm && pci_platform_pm->set_state)\n+\t\treturn pci_platform_pm->set_state(dev, t);\n+\n+\treturn -ENODEV;\n }\n \n static inline pci_power_t platform_pci_get_power_state(struct pci_dev *dev)\n {\n-\treturn pci_platform_pm ? pci_platform_pm->get_state(dev) : PCI_UNKNOWN;\n+\tif (pci_platform_pm && pci_platform_pm->get_state)\n+\t\treturn pci_platform_pm->get_state(dev);\n+\n+\treturn PCI_UNKNOWN;\n }\n \n static inline pci_power_t platform_pci_choose_state(struct pci_dev *dev)\n {\n-\treturn pci_platform_pm ?\n-\t\t\tpci_platform_pm->choose_state(dev) : PCI_POWER_ERROR;\n+\tif (pci_platform_pm && pci_platform_pm->choose_state)\n+\t\treturn pci_platform_pm->choose_state(dev);\n+\n+\treturn PCI_POWER_ERROR;\n }\n \n static inline int platform_pci_set_wakeup(struct pci_dev *dev, bool enable)\n {\n-\treturn pci_platform_pm ?\n-\t\t\tpci_platform_pm->set_wakeup(dev, enable) : -ENODEV;\n+\tif (pci_platform_pm && pci_platform_pm->set_wakeup)\n+\t\treturn pci_platform_pm->set_wakeup(dev, enable);\n+\n+\treturn -ENODEV;\n }\n \n static inline bool platform_pci_need_resume(struct pci_dev *dev)\n {\n-\treturn pci_platform_pm ? pci_platform_pm->need_resume(dev) : false;\n+\tif (pci_platform_pm && pci_platform_pm->need_resume)\n+\t\treturn pci_platform_pm->need_resume(dev);\n+\n+\treturn false;\n }\n \n /**\ndiff --git a/drivers/pci/pci.h b/drivers/pci/pci.h\nindex e816a13e6259..048668271014 100644\n--- a/drivers/pci/pci.h\n+++ b/drivers/pci/pci.h\n@@ -52,9 +52,6 @@ int pci_probe_reset_function(struct pci_dev *dev);\n  * @need_resume: returns 'true' if the given device (which is currently\n  *\t\tsuspended) needs to be resumed to be configured for system\n  *\t\twakeup.\n- *\n- * If given platform is generally capable of power managing PCI devices, all of\n- * these callbacks are mandatory.\n  */\n struct pci_platform_pm_ops {\n \tbool (*is_manageable)(struct pci_dev *dev);\n@@ -65,7 +62,7 @@ struct pci_platform_pm_ops {\n \tbool (*need_resume)(struct pci_dev *dev);\n };\n \n-int pci_set_platform_pm(const struct pci_platform_pm_ops *ops);\n+void pci_set_platform_pm(const struct pci_platform_pm_ops *ops);\n void pci_update_current_state(struct pci_dev *dev, pci_power_t state);\n void pci_power_up(struct pci_dev *dev);\n void pci_disable_enabled_device(struct pci_dev *dev);\n",
    "prefixes": [
        "RFC",
        "v10",
        "5/7"
    ]
}