get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 2217931,
    "url": "http://patchwork.ozlabs.org/api/patches/2217931/?format=api",
    "web_url": "http://patchwork.ozlabs.org/project/linux-pwm/patch/20260331-t264-pwm-v4-5-c041659677cf@nvidia.com/",
    "project": {
        "id": 38,
        "url": "http://patchwork.ozlabs.org/api/projects/38/?format=api",
        "name": "Linux PWM development",
        "link_name": "linux-pwm",
        "list_id": "linux-pwm.vger.kernel.org",
        "list_email": "linux-pwm@vger.kernel.org",
        "web_url": "",
        "scm_url": "",
        "webscm_url": "",
        "list_archive_url": "",
        "list_archive_url_format": "",
        "commit_url_format": ""
    },
    "msgid": "<20260331-t264-pwm-v4-5-c041659677cf@nvidia.com>",
    "list_archive_url": null,
    "date": "2026-03-31T02:12:17",
    "name": "[v4,5/7] pwm: tegra: Parametrize duty and scale field widths",
    "commit_ref": null,
    "pull_url": null,
    "state": "new",
    "archived": false,
    "hash": "59207791330660d6302f445b2883b780407bacb6",
    "submitter": {
        "id": 26499,
        "url": "http://patchwork.ozlabs.org/api/people/26499/?format=api",
        "name": "Mikko Perttunen",
        "email": "mperttunen@nvidia.com"
    },
    "delegate": null,
    "mbox": "http://patchwork.ozlabs.org/project/linux-pwm/patch/20260331-t264-pwm-v4-5-c041659677cf@nvidia.com/mbox/",
    "series": [
        {
            "id": 498118,
            "url": "http://patchwork.ozlabs.org/api/series/498118/?format=api",
            "web_url": "http://patchwork.ozlabs.org/project/linux-pwm/list/?series=498118",
            "date": "2026-03-31T02:12:12",
            "name": "Tegra264 PWM support",
            "version": 4,
            "mbox": "http://patchwork.ozlabs.org/series/498118/mbox/"
        }
    ],
    "comments": "http://patchwork.ozlabs.org/api/patches/2217931/comments/",
    "check": "pending",
    "checks": "http://patchwork.ozlabs.org/api/patches/2217931/checks/",
    "tags": {},
    "related": [],
    "headers": {
        "Return-Path": "\n <linux-pwm+bounces-8434-incoming=patchwork.ozlabs.org@vger.kernel.org>",
        "X-Original-To": [
            "incoming@patchwork.ozlabs.org",
            "linux-pwm@vger.kernel.org"
        ],
        "Delivered-To": "patchwork-incoming@legolas.ozlabs.org",
        "Authentication-Results": [
            "legolas.ozlabs.org;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=Nvidia.com header.i=@Nvidia.com header.a=rsa-sha256\n header.s=selector2 header.b=Kc2o8ADw;\n\tdkim-atps=neutral",
            "legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org\n (client-ip=2600:3c09:e001:a7::12fc:5321; helo=sto.lore.kernel.org;\n envelope-from=linux-pwm+bounces-8434-incoming=patchwork.ozlabs.org@vger.kernel.org;\n receiver=patchwork.ozlabs.org)",
            "smtp.subspace.kernel.org;\n\tdkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com\n header.b=\"Kc2o8ADw\"",
            "smtp.subspace.kernel.org;\n arc=fail smtp.client-ip=40.107.208.29",
            "smtp.subspace.kernel.org;\n dmarc=pass (p=reject dis=none) header.from=nvidia.com",
            "smtp.subspace.kernel.org;\n spf=fail smtp.mailfrom=nvidia.com",
            "dkim=none (message not signed)\n header.d=none;dmarc=none action=none header.from=nvidia.com;"
        ],
        "Received": [
            "from sto.lore.kernel.org (sto.lore.kernel.org\n [IPv6:2600:3c09:e001:a7::12fc:5321])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519 server-signature ECDSA (secp384r1) server-digest SHA384)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4flBV75R13z1yGH\n\tfor <incoming@patchwork.ozlabs.org>; Tue, 31 Mar 2026 13:13:03 +1100 (AEDT)",
            "from smtp.subspace.kernel.org (conduit.subspace.kernel.org\n [100.90.174.1])\n\tby sto.lore.kernel.org (Postfix) with ESMTP id 39C173015B60\n\tfor <incoming@patchwork.ozlabs.org>; Tue, 31 Mar 2026 02:13:00 +0000 (UTC)",
            "from localhost.localdomain (localhost.localdomain [127.0.0.1])\n\tby smtp.subspace.kernel.org (Postfix) with ESMTP id 14DCD367F2E;\n\tTue, 31 Mar 2026 02:12:59 +0000 (UTC)",
            "from PH0PR06CU001.outbound.protection.outlook.com\n (mail-westus3azon11011029.outbound.protection.outlook.com [40.107.208.29])\n\t(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))\n\t(No client certificate requested)\n\tby smtp.subspace.kernel.org (Postfix) with ESMTPS id 97E1236680E;\n\tTue, 31 Mar 2026 02:12:57 +0000 (UTC)",
            "from SJ2PR12MB9161.namprd12.prod.outlook.com (2603:10b6:a03:566::20)\n by CH3PR12MB8330.namprd12.prod.outlook.com (2603:10b6:610:12c::22) with\n Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.15; Tue, 31 Mar\n 2026 02:12:53 +0000",
            "from SJ2PR12MB9161.namprd12.prod.outlook.com\n ([fe80::d9d1:8c49:a703:b017]) by SJ2PR12MB9161.namprd12.prod.outlook.com\n ([fe80::d9d1:8c49:a703:b017%4]) with mapi id 15.20.9769.014; Tue, 31 Mar 2026\n 02:12:53 +0000"
        ],
        "ARC-Seal": [
            "i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;\n\tt=1774923179; cv=fail;\n b=MNp+trGsto5wHeFOScpbfu2MfOGWTr1wff/EiRYMY9usTlBU8Qiv4Ica3cjitKNJQEtpF4HE+g7yXou87t02KBH59Z5WTdInw1Nu8JXyAzd/i/Jsqnu4xO9Sxz/9SNvUCqYVZlXWqzFGYzmEzT9xFEzIv5NuhpG3DRKR+s/eJ6E=",
            "i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;\n b=woLk6GznbXx1a0TWjWgk7Bab3J+aFK09AVgXEILferKQxB25gxRVC4Tlc+wuyd+UpVYOPjGNyW8oVEuL70YPhjl722CQTck8MuDxEBipD32EPrhc12YfJX/p54gSNpboanK8caGL+KMQZ93sxpsFowhkxInJBqev24JVi4lTtbor0+/XJbj3tNzAJbGv3gcabQVtuJFU2tGQ2CNa8bx7inm3i+fMYJrfMO6O30UB8dUlJwRuYslZECXtov7a8wOnMyytcXBAfg5lxYRGNws6RdCknK+O5XDQJ+2jFSwoSeileN95UhMIPK+wp4dJIpZaFkXXfvlDow7UwX05KjC88A=="
        ],
        "ARC-Message-Signature": [
            "i=2; a=rsa-sha256; d=subspace.kernel.org;\n\ts=arc-20240116; t=1774923179; c=relaxed/simple;\n\tbh=ZZX829wkEbStKuql+pnN7VobByEw3Wwgt4TVDHqZJtM=;\n\th=From:Date:Subject:Content-Type:Message-Id:References:In-Reply-To:\n\t To:Cc:MIME-Version;\n b=hJM89iFkH+qjNhDVRI8tljZqLbsBiHoNZMZlmw74/dIoGTIwkZ8rTAMX/X4nZRLBee/XBWrA13X/mJLFaay8LbJUCdPxmflyMbklPoz85NnwVtnLAB3IFxBUXcYQjVCYHktAAmwT5fTxEoWMG48sB48wvEKNPvXRK2tHMFeUA+c=",
            "i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;\n s=arcselector10001;\n h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;\n bh=Jb7yaNVzPG3NBK56+Bj81AVHoHwwJWxtZ4x75b+lKok=;\n b=u7MM6Mdvtpj+KccYEqZkkLGGh2npjgYcLnHi790U2Xyr3hhe4PjR7WkLGesIa3GFXFHLpaFm6mJ5C4riNmImR4+en8kK/+CbuT1Vq1sxoKZlhC/cXhdumprn7g8XtD5Z4Sah+5GnbBGHQYM59MOPO6htW1XNufMJVNY3vM47XCu+m6BMyMAU3slW+6q3v+29SLMolvQ+bvDCccjGRFycv1kmdeSojxgTNp4WB2PDV567VRW99HNsk+5CZbPZ6ANgabQHEk5Qx9fyB7/irVVixpnXRqpniCQvLGz8ZbctNHAENDvV3MG4T73MsRmENes8Q8SEYbyeY+NEtaGJMrCwcw=="
        ],
        "ARC-Authentication-Results": [
            "i=2; smtp.subspace.kernel.org;\n dmarc=pass (p=reject dis=none) header.from=nvidia.com;\n spf=fail smtp.mailfrom=nvidia.com;\n dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com\n header.b=Kc2o8ADw; arc=fail smtp.client-ip=40.107.208.29",
            "i=1; mx.microsoft.com 1; spf=pass\n smtp.mailfrom=nvidia.com; dmarc=pass action=none header.from=nvidia.com;\n dkim=pass header.d=nvidia.com; arc=none"
        ],
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com;\n s=selector2;\n h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;\n bh=Jb7yaNVzPG3NBK56+Bj81AVHoHwwJWxtZ4x75b+lKok=;\n b=Kc2o8ADw1KeKA1JVixsFukp/hNUpXNEWxkGucaK6/HPbae1VIzoAcbur4OdVdWkHcKI3vJVDJe3Rv+Q4sMYtGRJF0teiiEeewVWgpFiPPjUs81jpvFYvWWwknyp1IfC2fGykCH8nPKV88d6JZ+F26gd7edahkNpSKnIuYSw4yoeJdec58AkaF44YeMqNTBEJiG5gwvPy2P7ytJ/7r6laYBFpOBOd9Z57/SzyejFxWyTG5Qrn3SFInJk9EplXyLnAAJV07VW7nengNAF7wXwBNd9ATCR+z2XfmoLBRHXnvif2jaGdoXEqqfq78EQFLnQ+L22i300vxZrHf7e6YfMuYw==",
        "From": "Mikko Perttunen <mperttunen@nvidia.com>",
        "Date": "Tue, 31 Mar 2026 11:12:17 +0900",
        "Subject": "[PATCH v4 5/7] pwm: tegra: Parametrize duty and scale field widths",
        "Content-Type": "text/plain; charset=\"utf-8\"",
        "Content-Transfer-Encoding": "7bit",
        "Message-Id": "<20260331-t264-pwm-v4-5-c041659677cf@nvidia.com>",
        "References": "<20260331-t264-pwm-v4-0-c041659677cf@nvidia.com>",
        "In-Reply-To": "<20260331-t264-pwm-v4-0-c041659677cf@nvidia.com>",
        "To": "Thierry Reding <thierry.reding@gmail.com>, =?utf-8?q?Uwe_Kleine-K=C3=B6n?=\n\t=?utf-8?q?ig?= <ukleinek@kernel.org>,\n  Jonathan Hunter <jonathanh@nvidia.com>, Rob Herring <robh@kernel.org>,\n  Krzysztof Kozlowski <krzk+dt@kernel.org>,\n  Conor Dooley <conor+dt@kernel.org>",
        "Cc": "linux-pwm@vger.kernel.org, linux-tegra@vger.kernel.org,\n linux-kernel@vger.kernel.org, devicetree@vger.kernel.org,\n Yi-Wei Wang <yiweiw@nvidia.com>, Thierry Reding <treding@nvidia.com>,\n Mikko Perttunen <mperttunen@nvidia.com>",
        "X-Mailer": "b4 0.14.3",
        "X-ClientProxiedBy": "TY4P301CA0109.JPNP301.PROD.OUTLOOK.COM\n (2603:1096:405:37b::16) To LV3PR12MB9166.namprd12.prod.outlook.com\n (2603:10b6:408:19c::13)",
        "Precedence": "bulk",
        "X-Mailing-List": "linux-pwm@vger.kernel.org",
        "List-Id": "<linux-pwm.vger.kernel.org>",
        "List-Subscribe": "<mailto:linux-pwm+subscribe@vger.kernel.org>",
        "List-Unsubscribe": "<mailto:linux-pwm+unsubscribe@vger.kernel.org>",
        "MIME-Version": "1.0",
        "X-MS-PublicTrafficType": "Email",
        "X-MS-TrafficTypeDiagnostic": "SJ2PR12MB9161:EE_|CH3PR12MB8330:EE_",
        "X-MS-Office365-Filtering-Correlation-Id": "c80b8f4d-77e3-4b44-ec80-08de8ecb03e5",
        "X-MS-Exchange-SenderADCheck": "1",
        "X-MS-Exchange-AntiSpam-Relay": "0",
        "X-Microsoft-Antispam": "\n\tBCL:0;ARA:13230040|1800799024|376014|10070799003|366016|56012099003|18002099003|22082099003;",
        "X-Microsoft-Antispam-Message-Info": "\n\tmmJSLXeFuC2hI67346QZpcHz6n8Li/Xig7aQJcJYwgu4mpIAwzvV6Kw0owT1ny4jVDppGEAd05uMphOxnULP2GmFuh6nyaozKDnl84IaBCmW9PE16r2wM2ccAS/f+N1B7G8fR7O68oeWonXqkLoLsq1NA4fPBWt8FmmIkEUdAN4nFJF8AXIZ6bf8SgEm5aV0bNhes31EtQ8lpju1NYX+pH3xVXdMolzNtqaekCZiahGZwYp2j5JRLV82da/4bhHbtEzohtmK/JcPvFkpb8/a6orGK4W2pi3CxzRVV4OY/lcB0xGUERde6BPoYXioXy2BrZ3UHshQRsRUbdRhwerNL5PIfPNcSJqLLMYB7ffBNWs4vnSNwgqqGswN7P8avXFEUQJTCy2RuFO5je8R6117Ax/kLy/UprSsL815GMscOca/HzN1e27A4O2t5hPNwvAuCNKB4swJMw59KXFb4sbv31BW5qYyC7EKDzY8yq58LCdgdoQJGp7G7lBie+Tgyw+DLXsIzg934ZmchNVfCPIQkZiu6k62saBy41LsxFDtkBOWQdEaCpEDvUhYQpHvIFUnedIXdqC4TVILBY0jBfiJ9uEEAzkQQP9I0BR15foTikVjzbxx0uWtqpuB55Ufke4JmmXHFE8Bdc2wSLOmVkM/yRmWXVQGKi+liW+bu4lkRdQe1hlqqO+zwN2JWtWR3Z3arQeqRtvw7n9OvWSwujYgNp3TKFRR685Twkv/gZAzK3s=",
        "X-Forefront-Antispam-Report": "\n\tCIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SJ2PR12MB9161.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(376014)(10070799003)(366016)(56012099003)(18002099003)(22082099003);DIR:OUT;SFP:1101;",
        "X-MS-Exchange-AntiSpam-MessageData-ChunkCount": "2",
        "X-MS-Exchange-AntiSpam-MessageData-0": "=?utf-8?q?z+CTgcKZygGtKI0IM4QTkx5F/dJK?=\n\t=?utf-8?q?Yk1JX+pSAG45r7kvcnk6HDRNRRmnhy1/8beBt0aYiiliy8fh+l0lmIYZOaZPB9bxD?=\n\t=?utf-8?q?NvX1ofn9QZPlSHdIyqAwuNHwUszq4bI+Gk20cQzKu/dY2JGJIDucvU9Nd+H7ErAmM?=\n\t=?utf-8?q?nkfXYqcgEZzHkJN+ZoNKP9kqElPBJifPUzKiEIoA3eOML6dMPd4EqTZnPqFvZZnPz?=\n\t=?utf-8?q?2JM51obZKU3/Nw2RBDMIAcO97r28VfVSaQISmWGwZtR6x2jWI8ZymJWWJJZktL8l+?=\n\t=?utf-8?q?LZ3kHe0l0U79FpVbE1GB7vfy71b/d7z99Haz0RwRqNOJV3cesZy7wd9ALndO437Ae?=\n\t=?utf-8?q?rv870LQJ4gt1UZTW/MiCxhAPFz+NqmEYK567b9vcNJZpjVT6u3YfJcGu7mS4Qs/jH?=\n\t=?utf-8?q?QUdJaNcZwH4oHYOPbOREllbhaiK13qMz+gjTauC1B7VIE4TGt9mfLmgZhXZjcBI9s?=\n\t=?utf-8?q?TTmbBYIBo8op2q+g632eHQcKwV4t2ePcwjFYxyR3AdAYe+JWVyJV3hTM0VAWccRnj?=\n\t=?utf-8?q?44HC0KcWbkTJITAA1QqtvMmH7uV8c7FA4+u/A9ukRTBcHK2LvThDOBVX3afmBpnth?=\n\t=?utf-8?q?vFd8qj6a7JHD5LHlr+wHVNkoWFtum2+IdIgk7WFcm90+Bpi0a5RUINem3frx8UFiI?=\n\t=?utf-8?q?huKSCpKHNn7anyDkaqiTG/JLtTItasVKuYDY7XSM//wKcvkoXFrRG/+eJpdYFoqg0?=\n\t=?utf-8?q?wogJCUhrukV5tHT2Jx7LCuB5FPByF/7zdmctyWX8vjspzaCv4kPRR69WJeDoh9UkU?=\n\t=?utf-8?q?67GUw0cPRLX5SOJgjVxCBcGZ+bFViag4jwXSLOcp6p/+lVCYnBFp7PzAlIZtm+ZTE?=\n\t=?utf-8?q?yIxtikO9zfq9UPAX3eDzkPsZnGgnKpcQDUuhJ1oDFw3TYM8VSw7S7QaTshdih0AzW?=\n\t=?utf-8?q?y4rJauLVWaRVoMOjK1Y3cTcRI1SIzfnYsOq7i9lAj3HX4MNxjVBQGQt7vuMxmyaQW?=\n\t=?utf-8?q?uYgVjPMay69LGEzBT3czXSasHE4LU4vI55xl4DrnqI9ebo9Sdw4SOXK931wx320in?=\n\t=?utf-8?q?xlvKvymstDVpbe1ti/tutR2IBOD4s41c4CpfW7fA1d0Ogsx9OlY2ho3GmQFb3xnhi?=\n\t=?utf-8?q?D5SQfLu8GujlPdpN6tMIZ5hIJhozfnkWm93+KKDnF03bs0abY9nrxOnsOpnEKsm5X?=\n\t=?utf-8?q?nkrEbAm/8KKBP0JDICN9W2d4VCnnZrTEXu+lCV/iGP42a2vCPkWRsr3nAf1MjLgtZ?=\n\t=?utf-8?q?gnvpTOtiGAqaEZPSoPZ+g16MMi9rzGgjAadfcV5d4TNpJhsPM8AcIvtTCvnZ5svpl?=\n\t=?utf-8?q?nPikW/0Q5keww5f+E7rR1IrJ1JivXgTh9Hmfz9z721kfHH3fVEy7drLbY2hG7ushi?=\n\t=?utf-8?q?l84X+sNf/zLgLVPEjXDZJ4quV0yRawEEgrx2S9zbEUJnLrX9FWyx6aPbuCByoZQ4r?=\n\t=?utf-8?q?0lbZR3HfrQrKURrXL4mLEessgU2feytbRU6SHdkLFDpGbv7tPL0/AHyRJvI5vhYqE?=\n\t=?utf-8?q?f7YcbwP/q8oaT9WepBGEORNkARl9HF/LE3atOcZMgWwjaDQaEMvFAWR6NOtapIDVZ?=\n\t=?utf-8?q?rfIwr8xABUmh3B+XBR7TQs8n5/kqjJu+0tvK2oCTH2SgT3uZeoBX7Kx8j2YxH0Irx?=\n\t=?utf-8?q?DlMZp1O4/I6FQFy3JiYeVlLZZ2YnFAs/1LGuEODV0RPSmjRq5W5mzSot47OicYXJO?=\n\t=?utf-8?q?RCYGVHdpd5rXmz5gRsAnRrMB4b7sUMB18o7XxnYOzeaoAIjaA2t/zsKk/CQkxKwLz?=\n\t=?utf-8?q?K8XYBrnrnDm4aE75I?=",
        "X-MS-Exchange-AntiSpam-MessageData-1": "r1+sccdx3lyWFwJFKDItXZqezJzjBRymcPY=",
        "X-OriginatorOrg": "Nvidia.com",
        "X-MS-Exchange-CrossTenant-Network-Message-Id": "\n c80b8f4d-77e3-4b44-ec80-08de8ecb03e5",
        "X-MS-Exchange-CrossTenant-AuthSource": "LV3PR12MB9166.namprd12.prod.outlook.com",
        "X-MS-Exchange-CrossTenant-AuthAs": "Internal",
        "X-MS-Exchange-CrossTenant-OriginalArrivalTime": "31 Mar 2026 02:12:53.6006\n (UTC)",
        "X-MS-Exchange-CrossTenant-FromEntityHeader": "Hosted",
        "X-MS-Exchange-CrossTenant-Id": "43083d15-7273-40c1-b7db-39efd9ccc17a",
        "X-MS-Exchange-CrossTenant-MailboxType": "HOSTED",
        "X-MS-Exchange-CrossTenant-UserPrincipalName": "\n OwnzXEF1y9mC6vFrdG/AjtBgI+HXu+gHPU0KkJR/7fvy1qOLNkFB6gYDQyGyqpPMMVi+aYykTL2+JhomjiKYoA==",
        "X-MS-Exchange-Transport-CrossTenantHeadersStamped": "CH3PR12MB8330"
    },
    "content": "Tegra264 has wider fields for the duty and scale register fields.\nParameterize the driver in preparation. The depth value also\nbecomes disconnected from the width of the duty field, so define\nit separately.\n\nCo-developed-by: Yi-Wei Wang <yiweiw@nvidia.com>\nSigned-off-by: Yi-Wei Wang <yiweiw@nvidia.com>\nReviewed-by: Thierry Reding <treding@nvidia.com>\nSigned-off-by: Mikko Perttunen <mperttunen@nvidia.com>\n---\n drivers/pwm/pwm-tegra.c | 29 ++++++++++++++++++-----------\n 1 file changed, 18 insertions(+), 11 deletions(-)",
    "diff": "diff --git a/drivers/pwm/pwm-tegra.c b/drivers/pwm/pwm-tegra.c\nindex b925ef914411..d7968521fbfd 100644\n--- a/drivers/pwm/pwm-tegra.c\n+++ b/drivers/pwm/pwm-tegra.c\n@@ -52,16 +52,19 @@\n #include <soc/tegra/common.h>\n \n #define PWM_ENABLE\t(1 << 31)\n-#define PWM_DUTY_WIDTH\t8\n #define PWM_DUTY_SHIFT\t16\n-#define PWM_SCALE_WIDTH\t13\n #define PWM_SCALE_SHIFT\t0\n \n #define PWM_CSR_0\t0\n \n+#define PWM_DEPTH\t256\n+\n struct tegra_pwm_soc {\n \tunsigned int num_channels;\n \tunsigned int enable_reg;\n+\n+\tunsigned int duty_width;\n+\tunsigned int scale_width;\n };\n \n struct tegra_pwm_chip {\n@@ -106,22 +109,22 @@ static int tegra_pwm_config(struct pwm_chip *chip, struct pwm_device *pwm,\n \n \t/*\n \t * Convert from duty_ns / period_ns to a fixed number of duty ticks\n-\t * per (1 << PWM_DUTY_WIDTH) cycles and make sure to round to the\n+\t * per PWM_DEPTH cycles and make sure to round to the\n \t * nearest integer during division.\n \t */\n-\tc *= (1 << PWM_DUTY_WIDTH);\n+\tc *= PWM_DEPTH;\n \tc = DIV_ROUND_CLOSEST_ULL(c, period_ns);\n \n \tval = (u32)c << PWM_DUTY_SHIFT;\n \n \t/*\n-\t *  min period = max clock limit >> PWM_DUTY_WIDTH\n+\t *  min period = max clock limit / PWM_DEPTH\n \t */\n \tif (period_ns < pc->min_period_ns)\n \t\treturn -EINVAL;\n \n \t/*\n-\t * Compute the prescaler value for which (1 << PWM_DUTY_WIDTH)\n+\t * Compute the prescaler value for which PWM_DEPTH\n \t * cycles at the PWM clock rate will take period_ns nanoseconds.\n \t *\n \t * num_channels: If single instance of PWM controller has multiple\n@@ -135,7 +138,7 @@ static int tegra_pwm_config(struct pwm_chip *chip, struct pwm_device *pwm,\n \t */\n \tif (pc->soc->num_channels == 1) {\n \t\t/*\n-\t\t * Rate is multiplied with 2^PWM_DUTY_WIDTH so that it matches\n+\t\t * Rate is multiplied with PWM_DEPTH so that it matches\n \t\t * with the maximum possible rate that the controller can\n \t\t * provide. Any further lower value can be derived by setting\n \t\t * PFM bits[0:12].\n@@ -145,7 +148,7 @@ static int tegra_pwm_config(struct pwm_chip *chip, struct pwm_device *pwm,\n \t\t * source clock rate as required_clk_rate, PWM controller will\n \t\t * be able to configure the requested period.\n \t\t */\n-\t\trequired_clk_rate = DIV_ROUND_UP_ULL((u64)NSEC_PER_SEC << PWM_DUTY_WIDTH,\n+\t\trequired_clk_rate = DIV_ROUND_UP_ULL((u64)NSEC_PER_SEC * PWM_DEPTH,\n \t\t\t\t\t\t     period_ns);\n \n \t\tif (required_clk_rate > clk_round_rate(pc->clk, required_clk_rate))\n@@ -169,7 +172,7 @@ static int tegra_pwm_config(struct pwm_chip *chip, struct pwm_device *pwm,\n \n \t/* Consider precision in PWM_SCALE_WIDTH rate calculation */\n \trate = mul_u64_u64_div_u64(pc->clk_rate, period_ns,\n-\t\t\t\t   (u64)NSEC_PER_SEC << PWM_DUTY_WIDTH);\n+\t\t\t\t   (u64)NSEC_PER_SEC * PWM_DEPTH);\n \n \t/*\n \t * Since the actual PWM divider is the register's frequency divider\n@@ -185,7 +188,7 @@ static int tegra_pwm_config(struct pwm_chip *chip, struct pwm_device *pwm,\n \t * Make sure that the rate will fit in the register's frequency\n \t * divider field.\n \t */\n-\tif (rate >> PWM_SCALE_WIDTH)\n+\tif (rate >> pc->soc->scale_width)\n \t\treturn -EINVAL;\n \n \tval |= rate << PWM_SCALE_SHIFT;\n@@ -324,7 +327,7 @@ static int tegra_pwm_probe(struct platform_device *pdev)\n \n \t/* Set minimum limit of PWM period for the IP */\n \tpc->min_period_ns =\n-\t    (NSEC_PER_SEC / (pc->clk_rate >> PWM_DUTY_WIDTH)) + 1;\n+\t    (NSEC_PER_SEC / (pc->clk_rate / PWM_DEPTH)) + 1;\n \n \tpc->rst = devm_reset_control_get_exclusive(&pdev->dev, \"pwm\");\n \tif (IS_ERR(pc->rst)) {\n@@ -404,11 +407,15 @@ static int __maybe_unused tegra_pwm_runtime_resume(struct device *dev)\n static const struct tegra_pwm_soc tegra20_pwm_soc = {\n \t.num_channels = 4,\n \t.enable_reg = PWM_CSR_0,\n+\t.duty_width = 8,\n+\t.scale_width = 13,\n };\n \n static const struct tegra_pwm_soc tegra186_pwm_soc = {\n \t.num_channels = 1,\n \t.enable_reg = PWM_CSR_0,\n+\t.duty_width = 8,\n+\t.scale_width = 13,\n };\n \n static const struct of_device_id tegra_pwm_of_match[] = {\n",
    "prefixes": [
        "v4",
        "5/7"
    ]
}