From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-7.0 required=3.0 tests=DKIMWL_WL_MED,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_PASS,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id F373BC43381 for ; Tue, 19 Mar 2019 00:48:16 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id B963220989 for ; Tue, 19 Mar 2019 00:48:16 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=xilinx.onmicrosoft.com header.i=@xilinx.onmicrosoft.com header.b="jMmddeRj" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726661AbfCSAsQ (ORCPT ); Mon, 18 Mar 2019 20:48:16 -0400 Received: from mail-eopbgr820080.outbound.protection.outlook.com ([40.107.82.80]:58272 "EHLO NAM01-SN1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1726487AbfCSAsQ (ORCPT ); Mon, 18 Mar 2019 20:48:16 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=xilinx.onmicrosoft.com; s=selector1-xilinx-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=gBcyZvNeNDAxpRVddX99P5WgJS5JLFHygOQk3kN3luY=; b=jMmddeRjqpgbu2FXC37by6pdwXl9lGDUBBT5sWLgM3d5k5KJxtLvVzaNz6VwzaIh2fg2x4+FNRHcJlhTiQ5N6Wz/yh6+sKxNTy3IiKK8BfhJAPBOWzNhbQ6h7f1Ey6p/zd3X/dKzs5InowmxDxIdVALi13QL/NE3Z3Ow/zLQWg8= Received: from BYAPR02MB5992.namprd02.prod.outlook.com (20.179.89.80) by BYAPR02MB4360.namprd02.prod.outlook.com (52.135.237.157) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1709.14; Tue, 19 Mar 2019 00:47:33 +0000 Received: from BYAPR02MB5992.namprd02.prod.outlook.com ([fe80::911c:eb9a:23e7:1da8]) by BYAPR02MB5992.namprd02.prod.outlook.com ([fe80::911c:eb9a:23e7:1da8%2]) with mapi id 15.20.1709.015; Tue, 19 Mar 2019 00:47:33 +0000 From: Jolly Shah To: Michael Tretter , "linux-clk@vger.kernel.org" , "linux-arm-kernel@lists.infradead.org" CC: "kernel@pengutronix.de" , Michael Turquette , Stephen Boyd , Michal Simek Subject: RE: [PATCH 5/5] clk: zynqmp: make field definitions of query responses consistent Thread-Topic: [PATCH 5/5] clk: zynqmp: make field definitions of query responses consistent Thread-Index: AQHU2MLQDpZvsRAsJke/QGF+SpQty6YSKQlg Date: Tue, 19 Mar 2019 00:47:33 +0000 Message-ID: References: <20190312110016.29174-1-m.tretter@pengutronix.de> <20190312110016.29174-6-m.tretter@pengutronix.de> In-Reply-To: <20190312110016.29174-6-m.tretter@pengutronix.de> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-Auto-Response-Suppress: DR, RN, NRN, OOF, AutoReply X-MS-TNEF-Correlator: authentication-results: spf=none (sender IP is ) smtp.mailfrom=JOLLYS@xilinx.com; x-originating-ip: [149.199.62.133] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: e521a6cc-5d68-4fe9-b9e9-08d6ac04792b x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0;PCL:0;RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600127)(711020)(4605104)(4618075)(2017052603328)(7153060)(7193020);SRVR:BYAPR02MB4360; x-ms-traffictypediagnostic: BYAPR02MB4360: x-microsoft-antispam-prvs: x-forefront-prvs: 0981815F2F x-forefront-antispam-report: SFV:NSPM;SFS:(10009020)(366004)(39860400002)(136003)(376002)(396003)(346002)(13464003)(189003)(199004)(97736004)(86362001)(74316002)(2201001)(186003)(26005)(6506007)(102836004)(99286004)(7736002)(305945005)(53546011)(66066001)(316002)(11346002)(446003)(2906002)(256004)(6116002)(105586002)(106356001)(486006)(81156014)(476003)(3846002)(8676002)(68736007)(81166006)(8936002)(14444005)(7696005)(2501003)(5660300002)(55016002)(72206003)(53936002)(52536014)(478600001)(71190400001)(71200400001)(9686003)(76176011)(6436002)(54906003)(25786009)(110136005)(107886003)(33656002)(14454004)(6246003)(4326008)(229853002);DIR:OUT;SFP:1101;SCL:1;SRVR:BYAPR02MB4360;H:BYAPR02MB5992.namprd02.prod.outlook.com;FPR:;SPF:None;LANG:en;PTR:InfoNoRecords;MX:1;A:1; received-spf: None (protection.outlook.com: xilinx.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam-message-info: NPIsjLWYyFitquAph1XEgafrRsaUTInBjiAmb5A82UFYFfJFWEZJjEzgtd9Ot79ezahnsm7WB5LBvEXwThaBY5KiWe3xnPlJ9XFj6fpEBsbn6AK/m0YAkqfbtC1LdDrIXRyVE7Ex3fP4KAGwAFwu+9x1miuyWO9tYVQCLpm28+HPldX4g1a7TlZ6r/Zpc5k9KzlzdEdRGGOOpZVIluZVmMseYLdwWiS0CYkvO+wgUFd5xatnV41nKoyyJr9vO2JNYgotjzjlj4s0KX59Txwx50HsH7vPAyGU5dYcAu8wV8WcIAcwXi9clsJEAZJ72+hQreNR/R6z5A3hrr4Gor40XC12L5jReHHcXsy+ayPwo42nfPygK475scWGS7M7DdOFCx3lHmoz5lVezbw0JYfC5FzGEyDUVn48SJxy/bDINJ8= Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-OriginatorOrg: xilinx.com X-MS-Exchange-CrossTenant-Network-Message-Id: e521a6cc-5d68-4fe9-b9e9-08d6ac04792b X-MS-Exchange-CrossTenant-originalarrivaltime: 19 Mar 2019 00:47:33.0578 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 657af505-d5df-48d0-8300-c31994686c5c X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-Transport-CrossTenantHeadersStamped: BYAPR02MB4360 Sender: linux-clk-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-clk@vger.kernel.org Hi Michael, > -----Original Message----- > From: Michael Tretter > Sent: Tuesday, March 12, 2019 4:00 AM > To: linux-clk@vger.kernel.org; linux-arm-kernel@lists.infradead.org > Cc: kernel@pengutronix.de; Michael Turquette ; > Stephen Boyd ; Michal Simek ; Jolly > Shah ; Michael Tretter > Subject: [PATCH 5/5] clk: zynqmp: make field definitions of query respons= es > consistent >=20 > The definition of the fields in the firmware responses to the queries is > inconsistent. Some are specified as a mask, some as a shift, and some by > the length of the previous field. >=20 > Specify all of them as bit masks and access the fields using the > FIELD_GET macro. >=20 > Signed-off-by: Michael Tretter > --- > drivers/clk/zynqmp/clkc.c | 39 ++++++++++++++++++--------------------- > 1 file changed, 18 insertions(+), 21 deletions(-) >=20 > diff --git a/drivers/clk/zynqmp/clkc.c b/drivers/clk/zynqmp/clkc.c > index 573c3c58dbbc..b4e13b8618b2 100644 > --- a/drivers/clk/zynqmp/clkc.c > +++ b/drivers/clk/zynqmp/clkc.c > @@ -21,20 +21,18 @@ > #define MAX_NODES 6 > #define MAX_NAME_LEN 50 >=20 > -#define CLK_TYPE_SHIFT 2 > - > #define NA_PARENT 0xFFFFFFFF > #define DUMMY_PARENT 0xFFFFFFFE >=20 > -#define CLK_TYPE_FIELD_LEN 4 > -#define CLK_TOPOLOGY_NODE_OFFSET 16 > +#define CLK_TOPOLOGY_TYPE GENMASK(3, 0) > +#define CLK_TOPOLOGY_FLAGS GENMASK(21, 8) > +#define CLK_TOPOLOGY_TYPE_FLAGS GENMASK(31, 24) >=20 > -#define CLK_TYPE_FIELD_MASK 0xF > -#define CLK_FLAG_FIELD_MASK GENMASK(21, 8) GENMASK(23,8) here. Thanks, Jolly Shah > -#define CLK_TYPE_FLAG_FIELD_MASK GENMASK(31, 24) > +#define CLK_PARENTS_ID GENMASK(15, 0) > +#define CLK_PARENTS_FLAGS GENMASK(31, 16) >=20 > -#define CLK_PARENTS_ID_LEN 16 > -#define CLK_PARENTS_ID_MASK 0xFFFF > +#define CLK_ATTR_VALID BIT(0) > +#define CLK_ATTR_TYPE BIT(2) >=20 > /* Flags for parents */ > #define PARENT_CLK_SELF 0 > @@ -49,8 +47,6 @@ > #define END_OF_PARENTS 1 > #define RESERVED_CLK_NAME "" >=20 > -#define CLK_VALID_MASK 0x1 > - > #define CLK_GET_NAME_RESP_LEN 16 > #define CLK_GET_TOPOLOGY_RESP_WORDS 3 > #define CLK_GET_PARENTS_RESP_WORDS 3 > @@ -369,15 +365,16 @@ static int __zynqmp_clock_get_topology(struct > clock_topology *topology, > u32 *data, u32 *nnodes) > { > int i; > + u32 type; >=20 > for (i =3D 0; i < CLK_GET_TOPOLOGY_RESP_WORDS; i++) { > - if (!(data[i] & CLK_TYPE_FIELD_MASK)) > + type =3D FIELD_GET(CLK_TOPOLOGY_TYPE, data[i]); > + if (type =3D=3D TYPE_INVALID) > return END_OF_TOPOLOGY_NODE; > - topology[*nnodes].type =3D data[i] & CLK_TYPE_FIELD_MASK; > - topology[*nnodes].flag =3D FIELD_GET(CLK_FLAG_FIELD_MASK, > - data[i]); > + topology[*nnodes].type =3D type > + topology[*nnodes].flag =3D FIELD_GET(CLK_TOPOLOGY_FLAGS, > data[i]); > topology[*nnodes].type_flag =3D > - FIELD_GET(CLK_TYPE_FLAG_FIELD_MASK, > data[i]); > + FIELD_GET(CLK_TOPOLOGY_TYPE_FLAGS, > data[i]); > (*nnodes)++; > } >=20 > @@ -433,12 +430,12 @@ static int __zynqmp_clock_get_parents(struct > clock_parent *parents, u32 *data, > return END_OF_PARENTS; >=20 > parent =3D &parents[i]; > - parent->id =3D data[i] & CLK_PARENTS_ID_MASK; > + parent->id =3D FIELD_GET(CLK_PARENTS_ID, data[i]); > if (data[i] =3D=3D DUMMY_PARENT) { > strcpy(parent->name, "dummy_name"); > parent->flag =3D 0; > } else { > - parent->flag =3D data[i] >> CLK_PARENTS_ID_LEN; > + parent->flag =3D FIELD_GET(CLK_PARENTS_FLAGS, > data[i]); > if (zynqmp_get_clock_name(parent->id, parent- > >name)) > continue; > } > @@ -638,9 +635,9 @@ static void zynqmp_get_clock_info(void) > if (ret) > continue; >=20 > - clock[i].valid =3D attr & CLK_VALID_MASK; > - clock[i].type =3D attr >> CLK_TYPE_SHIFT ? CLK_TYPE_EXTERNAL : > - CLK_TYPE_OUTPUT; > + clock[i].valid =3D FIELD_GET(CLK_ATTR_VALID, attr); > + clock[i].type =3D FIELD_GET(CLK_ATTR_TYPE) ? > + CLK_TYPE_EXTERNAL : CLK_TYPE_OUTPUT; > } >=20 > /* Get topology of all clock */ > -- > 2.20.1 From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-7.0 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_PASS,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id C184FC43381 for ; Tue, 19 Mar 2019 00:47:45 +0000 (UTC) Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 862BF20989 for ; Tue, 19 Mar 2019 00:47:45 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="FSeJVa5b"; dkim=fail reason="signature verification failed" (1024-bit key) header.d=xilinx.onmicrosoft.com header.i=@xilinx.onmicrosoft.com header.b="jMmddeRj" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 862BF20989 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=xilinx.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+infradead-linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20170209; h=Sender: Content-Transfer-Encoding:Content-Type:Cc:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:In-Reply-To:References: Message-ID:Date:Subject:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=aeId9tqKZGMcjP5WJ4nJlnLyGriESAS2IMiV0Qc6j8c=; b=FSeJVa5bTFKDwh nM9eDwF7pJTxPLorfkjcgcXqUl/kPsihzzc6pj9s8sgl2FHyOs4rRu8azwiPUtjfi5BAcYD5j8WAn fdFqxhBP7WgJ81peNEBnbwxMbleEcxPLLsu3iJhNdxKGj4c4DoQ08GA7fFNgXFx0k+ghZ4Ehl6vk7 R5AoEcSjusf/Ki9qjsqVpkxIYvPsGax1L2VlKZ/5A3jFnIZ3l1v8NZaYl33DoOkAWy07sDsNZw2w6 N+R3QwWHQ6mWyhQ+1tfugkZ+kdVYIwtnBAkLKSXztwIxjUUCbSnJlRPY4qNPfbY/twtRcP24qwxu9 cusPCptR4Qveh57Qly/A==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.90_1 #2 (Red Hat Linux)) id 1h62uq-0006ej-0Y; Tue, 19 Mar 2019 00:47:40 +0000 Received: from mail-sn1nam01on0610.outbound.protection.outlook.com ([2a01:111:f400:fe40::610] helo=NAM01-SN1-obe.outbound.protection.outlook.com) by bombadil.infradead.org with esmtps (Exim 4.90_1 #2 (Red Hat Linux)) id 1h62um-0006e8-Uk for linux-arm-kernel@lists.infradead.org; Tue, 19 Mar 2019 00:47:38 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=xilinx.onmicrosoft.com; s=selector1-xilinx-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=gBcyZvNeNDAxpRVddX99P5WgJS5JLFHygOQk3kN3luY=; b=jMmddeRjqpgbu2FXC37by6pdwXl9lGDUBBT5sWLgM3d5k5KJxtLvVzaNz6VwzaIh2fg2x4+FNRHcJlhTiQ5N6Wz/yh6+sKxNTy3IiKK8BfhJAPBOWzNhbQ6h7f1Ey6p/zd3X/dKzs5InowmxDxIdVALi13QL/NE3Z3Ow/zLQWg8= Received: from BYAPR02MB5992.namprd02.prod.outlook.com (20.179.89.80) by BYAPR02MB4360.namprd02.prod.outlook.com (52.135.237.157) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1709.14; Tue, 19 Mar 2019 00:47:33 +0000 Received: from BYAPR02MB5992.namprd02.prod.outlook.com ([fe80::911c:eb9a:23e7:1da8]) by BYAPR02MB5992.namprd02.prod.outlook.com ([fe80::911c:eb9a:23e7:1da8%2]) with mapi id 15.20.1709.015; Tue, 19 Mar 2019 00:47:33 +0000 From: Jolly Shah To: Michael Tretter , "linux-clk@vger.kernel.org" , "linux-arm-kernel@lists.infradead.org" Subject: RE: [PATCH 5/5] clk: zynqmp: make field definitions of query responses consistent Thread-Topic: [PATCH 5/5] clk: zynqmp: make field definitions of query responses consistent Thread-Index: AQHU2MLQDpZvsRAsJke/QGF+SpQty6YSKQlg Date: Tue, 19 Mar 2019 00:47:33 +0000 Message-ID: References: <20190312110016.29174-1-m.tretter@pengutronix.de> <20190312110016.29174-6-m.tretter@pengutronix.de> In-Reply-To: <20190312110016.29174-6-m.tretter@pengutronix.de> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-Auto-Response-Suppress: DR, RN, NRN, OOF, AutoReply X-MS-TNEF-Correlator: authentication-results: spf=none (sender IP is ) smtp.mailfrom=JOLLYS@xilinx.com; x-originating-ip: [149.199.62.133] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: e521a6cc-5d68-4fe9-b9e9-08d6ac04792b x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600127)(711020)(4605104)(4618075)(2017052603328)(7153060)(7193020); SRVR:BYAPR02MB4360; x-ms-traffictypediagnostic: BYAPR02MB4360: x-microsoft-antispam-prvs: x-forefront-prvs: 0981815F2F x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(366004)(39860400002)(136003)(376002)(396003)(346002)(13464003)(189003)(199004)(97736004)(86362001)(74316002)(2201001)(186003)(26005)(6506007)(102836004)(99286004)(7736002)(305945005)(53546011)(66066001)(316002)(11346002)(446003)(2906002)(256004)(6116002)(105586002)(106356001)(486006)(81156014)(476003)(3846002)(8676002)(68736007)(81166006)(8936002)(14444005)(7696005)(2501003)(5660300002)(55016002)(72206003)(53936002)(52536014)(478600001)(71190400001)(71200400001)(9686003)(76176011)(6436002)(54906003)(25786009)(110136005)(107886003)(33656002)(14454004)(6246003)(4326008)(229853002); DIR:OUT; SFP:1101; SCL:1; SRVR:BYAPR02MB4360; H:BYAPR02MB5992.namprd02.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; received-spf: None (protection.outlook.com: xilinx.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam-message-info: NPIsjLWYyFitquAph1XEgafrRsaUTInBjiAmb5A82UFYFfJFWEZJjEzgtd9Ot79ezahnsm7WB5LBvEXwThaBY5KiWe3xnPlJ9XFj6fpEBsbn6AK/m0YAkqfbtC1LdDrIXRyVE7Ex3fP4KAGwAFwu+9x1miuyWO9tYVQCLpm28+HPldX4g1a7TlZ6r/Zpc5k9KzlzdEdRGGOOpZVIluZVmMseYLdwWiS0CYkvO+wgUFd5xatnV41nKoyyJr9vO2JNYgotjzjlj4s0KX59Txwx50HsH7vPAyGU5dYcAu8wV8WcIAcwXi9clsJEAZJ72+hQreNR/R6z5A3hrr4Gor40XC12L5jReHHcXsy+ayPwo42nfPygK475scWGS7M7DdOFCx3lHmoz5lVezbw0JYfC5FzGEyDUVn48SJxy/bDINJ8= MIME-Version: 1.0 X-OriginatorOrg: xilinx.com X-MS-Exchange-CrossTenant-Network-Message-Id: e521a6cc-5d68-4fe9-b9e9-08d6ac04792b X-MS-Exchange-CrossTenant-originalarrivaltime: 19 Mar 2019 00:47:33.0578 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 657af505-d5df-48d0-8300-c31994686c5c X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-Transport-CrossTenantHeadersStamped: BYAPR02MB4360 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20190318_174737_052411_ED741AF1 X-CRM114-Status: GOOD ( 19.20 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Stephen Boyd , Michael Turquette , Michal Simek , "kernel@pengutronix.de" Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+infradead-linux-arm-kernel=archiver.kernel.org@lists.infradead.org Hi Michael, > -----Original Message----- > From: Michael Tretter > Sent: Tuesday, March 12, 2019 4:00 AM > To: linux-clk@vger.kernel.org; linux-arm-kernel@lists.infradead.org > Cc: kernel@pengutronix.de; Michael Turquette ; > Stephen Boyd ; Michal Simek ; Jolly > Shah ; Michael Tretter > Subject: [PATCH 5/5] clk: zynqmp: make field definitions of query responses > consistent > > The definition of the fields in the firmware responses to the queries is > inconsistent. Some are specified as a mask, some as a shift, and some by > the length of the previous field. > > Specify all of them as bit masks and access the fields using the > FIELD_GET macro. > > Signed-off-by: Michael Tretter > --- > drivers/clk/zynqmp/clkc.c | 39 ++++++++++++++++++--------------------- > 1 file changed, 18 insertions(+), 21 deletions(-) > > diff --git a/drivers/clk/zynqmp/clkc.c b/drivers/clk/zynqmp/clkc.c > index 573c3c58dbbc..b4e13b8618b2 100644 > --- a/drivers/clk/zynqmp/clkc.c > +++ b/drivers/clk/zynqmp/clkc.c > @@ -21,20 +21,18 @@ > #define MAX_NODES 6 > #define MAX_NAME_LEN 50 > > -#define CLK_TYPE_SHIFT 2 > - > #define NA_PARENT 0xFFFFFFFF > #define DUMMY_PARENT 0xFFFFFFFE > > -#define CLK_TYPE_FIELD_LEN 4 > -#define CLK_TOPOLOGY_NODE_OFFSET 16 > +#define CLK_TOPOLOGY_TYPE GENMASK(3, 0) > +#define CLK_TOPOLOGY_FLAGS GENMASK(21, 8) > +#define CLK_TOPOLOGY_TYPE_FLAGS GENMASK(31, 24) > > -#define CLK_TYPE_FIELD_MASK 0xF > -#define CLK_FLAG_FIELD_MASK GENMASK(21, 8) GENMASK(23,8) here. Thanks, Jolly Shah > -#define CLK_TYPE_FLAG_FIELD_MASK GENMASK(31, 24) > +#define CLK_PARENTS_ID GENMASK(15, 0) > +#define CLK_PARENTS_FLAGS GENMASK(31, 16) > > -#define CLK_PARENTS_ID_LEN 16 > -#define CLK_PARENTS_ID_MASK 0xFFFF > +#define CLK_ATTR_VALID BIT(0) > +#define CLK_ATTR_TYPE BIT(2) > > /* Flags for parents */ > #define PARENT_CLK_SELF 0 > @@ -49,8 +47,6 @@ > #define END_OF_PARENTS 1 > #define RESERVED_CLK_NAME "" > > -#define CLK_VALID_MASK 0x1 > - > #define CLK_GET_NAME_RESP_LEN 16 > #define CLK_GET_TOPOLOGY_RESP_WORDS 3 > #define CLK_GET_PARENTS_RESP_WORDS 3 > @@ -369,15 +365,16 @@ static int __zynqmp_clock_get_topology(struct > clock_topology *topology, > u32 *data, u32 *nnodes) > { > int i; > + u32 type; > > for (i = 0; i < CLK_GET_TOPOLOGY_RESP_WORDS; i++) { > - if (!(data[i] & CLK_TYPE_FIELD_MASK)) > + type = FIELD_GET(CLK_TOPOLOGY_TYPE, data[i]); > + if (type == TYPE_INVALID) > return END_OF_TOPOLOGY_NODE; > - topology[*nnodes].type = data[i] & CLK_TYPE_FIELD_MASK; > - topology[*nnodes].flag = FIELD_GET(CLK_FLAG_FIELD_MASK, > - data[i]); > + topology[*nnodes].type = type > + topology[*nnodes].flag = FIELD_GET(CLK_TOPOLOGY_FLAGS, > data[i]); > topology[*nnodes].type_flag = > - FIELD_GET(CLK_TYPE_FLAG_FIELD_MASK, > data[i]); > + FIELD_GET(CLK_TOPOLOGY_TYPE_FLAGS, > data[i]); > (*nnodes)++; > } > > @@ -433,12 +430,12 @@ static int __zynqmp_clock_get_parents(struct > clock_parent *parents, u32 *data, > return END_OF_PARENTS; > > parent = &parents[i]; > - parent->id = data[i] & CLK_PARENTS_ID_MASK; > + parent->id = FIELD_GET(CLK_PARENTS_ID, data[i]); > if (data[i] == DUMMY_PARENT) { > strcpy(parent->name, "dummy_name"); > parent->flag = 0; > } else { > - parent->flag = data[i] >> CLK_PARENTS_ID_LEN; > + parent->flag = FIELD_GET(CLK_PARENTS_FLAGS, > data[i]); > if (zynqmp_get_clock_name(parent->id, parent- > >name)) > continue; > } > @@ -638,9 +635,9 @@ static void zynqmp_get_clock_info(void) > if (ret) > continue; > > - clock[i].valid = attr & CLK_VALID_MASK; > - clock[i].type = attr >> CLK_TYPE_SHIFT ? CLK_TYPE_EXTERNAL : > - CLK_TYPE_OUTPUT; > + clock[i].valid = FIELD_GET(CLK_ATTR_VALID, attr); > + clock[i].type = FIELD_GET(CLK_ATTR_TYPE) ? > + CLK_TYPE_EXTERNAL : CLK_TYPE_OUTPUT; > } > > /* Get topology of all clock */ > -- > 2.20.1 _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel