From patchwork Mon Jun 25 08:08:33 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jun Li X-Patchwork-Id: 10485239 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id 735D76031B for ; Mon, 25 Jun 2018 08:25:55 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 5D7A928845 for ; Mon, 25 Jun 2018 08:25:55 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 510102889E; Mon, 25 Jun 2018 08:25:55 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-7.8 required=2.0 tests=BAYES_00,DKIM_SIGNED, MAILING_LIST_MULTI, RCVD_IN_DNSWL_HI, T_DKIM_INVALID autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id A8A9028845 for ; Mon, 25 Jun 2018 08:25:54 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752755AbeFYIZw (ORCPT ); Mon, 25 Jun 2018 04:25:52 -0400 Received: from mail-eopbgr60079.outbound.protection.outlook.com ([40.107.6.79]:6750 "EHLO EUR04-DB3-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1752576AbeFYIZu (ORCPT ); Mon, 25 Jun 2018 04:25:50 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=MV7ZTSi+9Q1t1d0nKgiRperPLgtDE8zgSXqoBrFic6g=; b=i/Mnk9U2DI7j1pQXgUp3Z9ucxKLZ8sqV8aThbuXz6jb8VngLTvz+y2pOOXcGxlYucc8iIodPULehohIEtLi5LF9SrtLHySxCNpJVvFWFT2yZfCfafHDHv6LXhqpjLUeSNk0bZ6CFTxinmnCJx7M2j/bkwV0CT7RlfvHK0kZQLDY= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=jun.li@nxp.com; Received: from b47624-OptiPlex-7040.ap.freescale.net (92.121.68.129) by VI1PR0402MB3920.eurprd04.prod.outlook.com (2603:10a6:803:23::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.884.24; Mon, 25 Jun 2018 08:25:42 +0000 From: Li Jun To: robh+dt@kernel.org, gregkh@linuxfoundation.org, heikki.krogerus@linux.intel.com, linux@roeck-us.net Cc: a.hajda@samsung.com, jun.li@nxp.com, cw00.choi@samsung.com, shufan_lee@richtek.com, peter.chen@nxp.com, devicetree@vger.kernel.org, linux-usb@vger.kernel.org, linux-imx@nxp.com Subject: [PATCH v7 01/14] dt-bindings: connector: add properties for typec Date: Mon, 25 Jun 2018 16:08:33 +0800 Message-Id: <1529914126-22550-2-git-send-email-jun.li@nxp.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1529914126-22550-1-git-send-email-jun.li@nxp.com> References: <1529914126-22550-1-git-send-email-jun.li@nxp.com> MIME-Version: 1.0 X-Originating-IP: [92.121.68.129] X-ClientProxiedBy: HK0PR04CA0004.apcprd04.prod.outlook.com (2603:1096:203:36::16) To VI1PR0402MB3920.eurprd04.prod.outlook.com (2603:10a6:803:23::12) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 829b5e21-0b81-4501-d832-08d5da75403a X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(8989117)(4534165)(4627221)(201703031133081)(201702281549075)(8990107)(5600026)(711020)(48565401081)(2017052603328)(7153060)(7193020); SRVR:VI1PR0402MB3920; X-Microsoft-Exchange-Diagnostics: 1; VI1PR0402MB3920; 3:9URUHx7vitYasWl4CuY+i8xKS3ruMMmZhOiZTuJNwHQALK7qAERvUM+do2nOlb7cv5FA5pYyejWJFVA9sJsEutkL4CvD4yFaKq5lv44WLFjK56WRYUhQaNEe+Af18MMrQRiaIM+cr+Yj8SSaA66xHPeDClQSFRUVuAbNYTuq51AdxVJWAFKXggvZFQKIjGiTuR9RBAH5a6crhRlBbpcUf0VseHtfdMyWt7gRAmi5cmrbMM7wMqZIhSTYLboBBWta; 25:tjn/5E+ZkeyModxDzZ7KWVS+in7TsMlM/1xjynCq+eM7exR2KuEDe52VkBJEWv9OsFoEsFp0LaMdy1FxLUmwYrrATSJSf2qFEYefcF97uSLsJZdxN2Dq8EuA2meywlSspZ93gHearY4B/R9Fky0GZTuikl6T8tGRIfCgiGlbnou3cCug2Sb4pAOdgW4sRT+wFiLS7UA8/wE5sa5gHvHnd7JkyzOINeZDq7varV4lns+PwJI4U/UOIrDMrPNtoA9tjzU5Dc/SgFmQfrZnyViMjJ9+NiA2si+X3UMo6PXTVZ0gSO4t7Ty6oM8Atj8wVD3dArudPew1SC6wlSC2SmwAlg==; 31:/zuwv0M5HeeIXHyiWlLSDnAHkKttDsbbESdEQ7KRBtlHkrUEoLqQxt3ygtEk+BJqJC4unSDBS3xyBINRdfE1rgjESy+WgLLbrmDOXVUcgERNCVrhWg7jo2CBhKVKR+CDNjwRsFDkB/kWzEnY6e/zbLRy0VRqqoFEk1P9cVpw+2Qk8P/C50UhFCw6969KWmw0OKYQRkKs7dZ2usK3guyR7SHgwKTjDN9O7Zkk2arfy7U= X-MS-TrafficTypeDiagnostic: VI1PR0402MB3920: X-Microsoft-Exchange-Diagnostics: 1; VI1PR0402MB3920; 20:V3T6yojcHZqZfnWoiz/KZcCv29ugLIzp/GC27XuknH8sT+oEbSxu+0OEcvKwm74uH3QLbeORv6yNgsdks8k1ugD9JQXy01e/+RmetAw1Ug9a75QJVXoPpvNlbSILd6+E3FWtgG6KC4JoUU1X8EYQsIs/ocgVCWSvuKTnyQY2Bz4WCKG9VlFnpwRtmFkjrauVAS7tYGql/QUCwp07yyNySFbcpp3L3bIHMjgdBJhqGttHPE/2NxfKfMXwI2CCYiM962+HPVfc7yV7ul8VDcY+TVaAPavAJdgBPBCWSSohbc1/s4E9aXW8yvMeEdVSa5f6TxESWNnKTClMQcOOcYGTm7GbQm5wyl/Iwrh646z+bX2QnTNWI0OE6A++65AJDHFocVfIAVbuGs2/MTYZHB2Fmop/s5HxaIURpJgaNgpM0hUewVXtdW73uI4H0oKRZZ1qI6Ja+HJbEoWhgFP9v/yItCVU3RdQ+EIs9FZ285PWRnou0mwT6rj5bG8A9pkod77B; 4:75l1LQKESzYO2IBlyWjNOjmfGu5PbnAYpIxiDe0mYPQxF+q2HlEMUrSUkOshcjDYea4Azl1ve7l2RWt++nsEPjR84IEKUZ7RPEoNB05Sp5mcqgp3etWPHn5Y6N1Z/0zm2Xv8dyw0K1nWKMYLVGTuOTazRDQtNNoOXgAgKLUR7vNYDUmTYrQV8WEarV7f8S5vJ2IKkCzJoxy3BhFtwVKUAfpC09aEBHuN8o0GuQSKkf7RR/VmUqIqaV8byB+yTFOVyxY95TDcIoemni6oHkT668kfXO/phlIzlIQqL8a+ojCvVPsOdQyojAP2WvJZzBgy X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(185117386973197); X-MS-Exchange-SenderADCheck: 1 X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(5005006)(8121501046)(93006095)(93001095)(10201501046)(3002001)(3231254)(944501410)(52105095)(6055026)(149027)(150027)(6041310)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123562045)(20161123560045)(20161123564045)(20161123558120)(6072148)(201708071742011)(7699016); SRVR:VI1PR0402MB3920; BCL:0; PCL:0; RULEID:; SRVR:VI1PR0402MB3920; X-Forefront-PRVS: 0714841678 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(366004)(346002)(39380400002)(39860400002)(396003)(376002)(199004)(189003)(53936002)(25786009)(47776003)(316002)(2906002)(5890100001)(16586007)(6486002)(36756003)(4326008)(386003)(6506007)(186003)(6512007)(478600001)(26005)(16526019)(97736004)(8936002)(86362001)(59450400001)(50226002)(52116002)(476003)(81166006)(81156014)(486006)(76176011)(305945005)(51416003)(8676002)(2616005)(6666003)(105586002)(68736007)(446003)(11346002)(66066001)(5660300001)(7736002)(50466002)(3846002)(106356001)(48376002)(6116002)(956004); DIR:OUT; SFP:1101; SCL:1; SRVR:VI1PR0402MB3920; H:b47624-OptiPlex-7040.ap.freescale.net; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; Received-SPF: None (protection.outlook.com: nxp.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; VI1PR0402MB3920; 23:ZKVEVl4f7myYAQ4HDddScDG5HRp2e2X5kgrAZdC?= =?us-ascii?Q?WQxQj7kGjoPFHesNeGHuM/Vt61hVKEGSghNxZAbNFP4YqjFBNnXpVM4LwSXs?= =?us-ascii?Q?dNAQ2LoCHjIyMnDUvUw0PUkg2V0SMFYkAAFbNz52ThR1JqZCDFC/Iz2mP4ek?= =?us-ascii?Q?o5IVYemfSe1OSgC9ZUOo4yQgyIOKjfO8FSBCrhpp4arzHCg/zFihgMRpvcTU?= =?us-ascii?Q?B0vxTdN5wku9eiJSQ49n9Pt6+nHfopGtesJziYK5QYm5pNH7dRNULwIRc+bo?= =?us-ascii?Q?iVccyFHIrPZYjmMBEmVjk8wI6KLPC/N8zYpaJ3LhcRzVt3a0O6EXRzabDfg+?= =?us-ascii?Q?CozXXCTbqzhPFr/aFbVQhY4leE/VJ5ZKT1Sdu1ZjZjSOWOkg8oOP6j44YSvk?= =?us-ascii?Q?w6bzK8NNGhgGM6I15GWGft1oreqhVdUvUnhRiab0IKhTXvt/SlV4DEA2BKrt?= =?us-ascii?Q?D+9AzYjLsUtOXY0KkOhfZX8euYEmH9wlqukO2PWSHysT+Cz0tNyH1HxWFWcL?= =?us-ascii?Q?7dSu7T3IPEjaLmbwXb8abmN748PyiBjFFU0zcqcUKYvHki989td7nzVmi4wZ?= =?us-ascii?Q?vyxnQUwdV50CaJcN4HjqF0n0jHBCBN5SA09HsGd9IFzow04Rkcvx2zJHZ7Y1?= =?us-ascii?Q?XW/BraVs3LnnX0N6xyAwguqnRHitqPLH6wUiADjMTx45r58oWRSUY1wMo4q7?= =?us-ascii?Q?FykvRpGasN660Mb32jWB8RIXdGuT0D6Fnp+JKGC20U23BQHV0EW7uTVyKkYG?= =?us-ascii?Q?9dfdUIFb4sVXU8NzXR6KGN55mSPzuGQM2+KZj3nhDnxoSZZ1CXdFORXjWoYn?= =?us-ascii?Q?iqCaVVEUZqbKHDsIuF06A7rGesMjtykUFhxs1A8u9Hak9M5KLDaqDq9DvFOG?= =?us-ascii?Q?67TftYSBharpmdz6hdg4YBu++5f1bgTUYdH4R9+5tP2xU4HlYFphtJJ01Z7H?= =?us-ascii?Q?+gsgvI6iV29SBWENxN7QihgirKhSF77l2wJfzBH8tPRSX/5ZWkD51lPT43L4?= =?us-ascii?Q?BA/VcH/kszokaWkxhGWYWzCNzsm+8y/0fpyf0XQdRz/RYXtPxonvYic4jTy0?= =?us-ascii?Q?DtFBCGjEwbKvUFphj5y2HInAJ++VNCPK7VUGur+iFhgPB/x0K5uOLDvMgX8f?= =?us-ascii?Q?aewtl4e2sXX+RKGxdFKaNcfKhCJxHJRayAfF3IlQaz7xHOcac9fyOFPDBvFX?= =?us-ascii?Q?RRFOuw/aFJeuZ7dvFEhT/oFkVn5di2srfj+HE?= X-Microsoft-Antispam-Message-Info: yveJ/K/bASyo+HGFmCm8OV5yPUxm+DMi9pP9/xoRVAZtFw+6VP3AuUwwGlcvFa4UecqnCJ0Z4zpr8Ctb+Km0g6qe14VkLuWqpwhMQdpaGbSIjkHzlQiVgpewSfgdHyJOL+DYOztJpPP91102ArwW9R7zfUGTngMBlSVHe/j2nKRKyoHZo0p0Pc8ZmHfbNaO3C3pRTEtMYCeYi+3oU9Wy4MhYaT15GYSm5H3be5uIf0/Fa8s+VemRKIyHI2P5raa4gZ5ructfduYcD/1UFWA3EChwEMIGRjxn12Dx6qcz0nT0qRJa2oOAC501+Ef8JOzc7AUp2jv2PFMwZrM3Bo+/UG4uwAvbG/5w2D8b5TG5nG8= X-Microsoft-Exchange-Diagnostics: 1; VI1PR0402MB3920; 6:GiZKNl2PVtuAgYUzJW0JYn75NMXocw8ArJqY7JZujw5gQFHASNZh3IbdDs7mno+HSubf3cf/oFcvCQkEIMeDPCgz1OITRv7/zt/NHGlpO7io8zm03UCLkS1k13PVJrqBrWzwncVuXCkCMSGcoo3q7tTrK1bhJtCeAA1Kse5jCgsJpOFzn4gmmedRdhPa1eefKp6DGWvnlPEVyMpiyCRuDH+J6hX3aeC9M5EqKJyhssei3bW4R3UNqSuo2Aji4NpM5d6PcBzieRfuvxXWzVJODIA6AmCfjGIV1S/dWtxsN1sLP3Ma5VXwNjxFdBBlbgKqRN7AI/87y5Gt2ANhSPoerzHTURHmExKkG/UVZ0LOkLOSQIFcjbOlgh4DNzo11MbTVrwVrpjV3i390Rhj2nXH5JX2GxMAH5OdnxD7yUxqcbl38IleCZ9Y6aAAl3lTsNoFEwNC5HxFK2Y4Hf4hzS61fA==; 5:mznjh/+9QO7YAe7wWE+rqU4hq6UQLQv711MqvgcC6aUv73dgpYFyJUHKRn7YNL+z/33PF/H/0sn9PVqae2cry5v74Uq8+udEcb+xWhTetnK7rWxmF5Z/cfxAcLukfDmloofG3Rvo3sdYji65LTKcGKV+4k43pUGR7+yEUoHkZEE=; 24:6wvf1Reo+nIhrYVXFGlzOXHLwJvjwxhroIN+sd6iu0WX1tIyXyEAzv+U5nupJ7c5crj8q90SGV8ktQbFU0pyPdctFq4+AbOwMyJnmvSzlUk= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; VI1PR0402MB3920; 7:Iik6DMFHH6DnQQnd40z4Tz4ZQDKgodyY3h1ofBwCo/OOHTLo6wMww4897YZtlqP8iZMMhRNVQpyvjMPGRChyJCupXs2ZYfj3aAjXgmWjAMUel5BvQ152vNF4ZIjinLVuunOJRgee9wTMFkr2wyeN4vSVVAqU58cfWFqD8m83UhfKH+hIiGAD74b/RjQj8KqLfT+JtHUsLWt2nDJExjaD47odmjoq3Pz4jqfAhipP/M6d1TpD1u9+6rZm6JQC5DCz X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 Jun 2018 08:25:42.0638 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 829b5e21-0b81-4501-d832-08d5da75403a X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR0402MB3920 Sender: linux-usb-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-usb@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP Add bindings supported by current typec driver, so user can pass all those properties via dt. Reviewed-by: Rob Herring Signed-off-by: Li Jun --- .../bindings/connector/usb-connector.txt | 44 +++++++++++++++ include/dt-bindings/usb/pd.h | 62 ++++++++++++++++++++++ 2 files changed, 106 insertions(+) diff --git a/Documentation/devicetree/bindings/connector/usb-connector.txt b/Documentation/devicetree/bindings/connector/usb-connector.txt index e1463f1..8855bfc 100644 --- a/Documentation/devicetree/bindings/connector/usb-connector.txt +++ b/Documentation/devicetree/bindings/connector/usb-connector.txt @@ -15,6 +15,33 @@ Optional properties: - type: size of the connector, should be specified in case of USB-A, USB-B non-fullsize connectors: "mini", "micro". +Optional properties for usb-c-connector: +- power-role: should be one of "source", "sink" or "dual"(DRP) if typec + connector has power support. +- try-power-role: preferred power role if "dual"(DRP) can support Try.SNK + or Try.SRC, should be "sink" for Try.SNK or "source" for Try.SRC. +- data-role: should be one of "host", "device", "dual"(DRD) if typec + connector supports USB data. + +Required properties for usb-c-connector with power delivery support: +- source-pdos: An array of u32 with each entry providing supported power + source data object(PDO), the detailed bit definitions of PDO can be found + in "Universal Serial Bus Power Delivery Specification" chapter 6.4.1.2 + Source_Capabilities Message, the order of each entry(PDO) should follow + the PD spec chapter 6.4.1. Required for power source and power dual role. + User can specify the source PDO array via PDO_FIXED/BATT/VAR() defined in + dt-bindings/usb/pd.h. +- sink-pdos: An array of u32 with each entry providing supported power + sink data object(PDO), the detailed bit definitions of PDO can be found + in "Universal Serial Bus Power Delivery Specification" chapter 6.4.1.3 + Sink Capabilities Message, the order of each entry(PDO) should follow + the PD spec chapter 6.4.1. Required for power sink and power dual role. + User can specify the sink PDO array via PDO_FIXED/BATT/VAR() defined in + dt-bindings/usb/pd.h. +- op-sink-microwatt: Sink required operating power in microwatt, if source + can't offer the power, Capability Mismatch is set. Required for power + sink and power dual role. + Required nodes: - any data bus to the connector should be modeled using the OF graph bindings specified in bindings/graph.txt, unless the bus is between parent node and @@ -73,3 +100,20 @@ ccic: s2mm005@33 { }; }; }; + +3. USB-C connector attached to a typec port controller(ptn5110), which has +power delivery support and enables drp. + +typec: ptn5110@50 { + ... + usb_con: connector { + compatible = "usb-c-connector"; + label = "USB-C"; + power-role = "dual"; + try-power-role = "sink"; + source-pdos = ; + sink-pdos = ; + op-sink-microwatt = <10000000>; + }; +}; diff --git a/include/dt-bindings/usb/pd.h b/include/dt-bindings/usb/pd.h new file mode 100644 index 0000000..7b7a92f --- /dev/null +++ b/include/dt-bindings/usb/pd.h @@ -0,0 +1,62 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +#ifndef __DT_POWER_DELIVERY_H +#define __DT_POWER_DELIVERY_H + +/* Power delivery Power Data Object definitions */ +#define PDO_TYPE_FIXED 0 +#define PDO_TYPE_BATT 1 +#define PDO_TYPE_VAR 2 +#define PDO_TYPE_APDO 3 + +#define PDO_TYPE_SHIFT 30 +#define PDO_TYPE_MASK 0x3 + +#define PDO_TYPE(t) ((t) << PDO_TYPE_SHIFT) + +#define PDO_VOLT_MASK 0x3ff +#define PDO_CURR_MASK 0x3ff +#define PDO_PWR_MASK 0x3ff + +#define PDO_FIXED_DUAL_ROLE (1 << 29) /* Power role swap supported */ +#define PDO_FIXED_SUSPEND (1 << 28) /* USB Suspend supported (Source) */ +#define PDO_FIXED_HIGHER_CAP (1 << 28) /* Requires more than vSafe5V (Sink) */ +#define PDO_FIXED_EXTPOWER (1 << 27) /* Externally powered */ +#define PDO_FIXED_USB_COMM (1 << 26) /* USB communications capable */ +#define PDO_FIXED_DATA_SWAP (1 << 25) /* Data role swap supported */ +#define PDO_FIXED_VOLT_SHIFT 10 /* 50mV units */ +#define PDO_FIXED_CURR_SHIFT 0 /* 10mA units */ + +#define PDO_FIXED_VOLT(mv) ((((mv) / 50) & PDO_VOLT_MASK) << PDO_FIXED_VOLT_SHIFT) +#define PDO_FIXED_CURR(ma) ((((ma) / 10) & PDO_CURR_MASK) << PDO_FIXED_CURR_SHIFT) + +#define PDO_FIXED(mv, ma, flags) \ + (PDO_TYPE(PDO_TYPE_FIXED) | (flags) | \ + PDO_FIXED_VOLT(mv) | PDO_FIXED_CURR(ma)) + +#define VSAFE5V 5000 /* mv units */ + +#define PDO_BATT_MAX_VOLT_SHIFT 20 /* 50mV units */ +#define PDO_BATT_MIN_VOLT_SHIFT 10 /* 50mV units */ +#define PDO_BATT_MAX_PWR_SHIFT 0 /* 250mW units */ + +#define PDO_BATT_MIN_VOLT(mv) ((((mv) / 50) & PDO_VOLT_MASK) << PDO_BATT_MIN_VOLT_SHIFT) +#define PDO_BATT_MAX_VOLT(mv) ((((mv) / 50) & PDO_VOLT_MASK) << PDO_BATT_MAX_VOLT_SHIFT) +#define PDO_BATT_MAX_POWER(mw) ((((mw) / 250) & PDO_PWR_MASK) << PDO_BATT_MAX_PWR_SHIFT) + +#define PDO_BATT(min_mv, max_mv, max_mw) \ + (PDO_TYPE(PDO_TYPE_BATT) | PDO_BATT_MIN_VOLT(min_mv) | \ + PDO_BATT_MAX_VOLT(max_mv) | PDO_BATT_MAX_POWER(max_mw)) + +#define PDO_VAR_MAX_VOLT_SHIFT 20 /* 50mV units */ +#define PDO_VAR_MIN_VOLT_SHIFT 10 /* 50mV units */ +#define PDO_VAR_MAX_CURR_SHIFT 0 /* 10mA units */ + +#define PDO_VAR_MIN_VOLT(mv) ((((mv) / 50) & PDO_VOLT_MASK) << PDO_VAR_MIN_VOLT_SHIFT) +#define PDO_VAR_MAX_VOLT(mv) ((((mv) / 50) & PDO_VOLT_MASK) << PDO_VAR_MAX_VOLT_SHIFT) +#define PDO_VAR_MAX_CURR(ma) ((((ma) / 10) & PDO_CURR_MASK) << PDO_VAR_MAX_CURR_SHIFT) + +#define PDO_VAR(min_mv, max_mv, max_ma) \ + (PDO_TYPE(PDO_TYPE_VAR) | PDO_VAR_MIN_VOLT(min_mv) | \ + PDO_VAR_MAX_VOLT(max_mv) | PDO_VAR_MAX_CURR(max_ma)) + + #endif /* __DT_POWER_DELIVERY_H */