From patchwork Fri Nov 11 15:46:19 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andy Shevchenko X-Patchwork-Id: 18887 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a5d:6687:0:0:0:0:0 with SMTP id l7csp818806wru; Fri, 11 Nov 2022 07:48:09 -0800 (PST) X-Google-Smtp-Source: AA0mqf6dW5yV4LefEjBKpIijzC1rF0MvyEo1+sn/PmMGWR8O4zpKvy51ZKRWnaRpWiLcVUc5ShQ3 X-Received: by 2002:a63:4283:0:b0:470:79cb:6c5a with SMTP id p125-20020a634283000000b0047079cb6c5amr2212845pga.254.1668181688938; Fri, 11 Nov 2022 07:48:08 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1668181688; cv=none; d=google.com; s=arc-20160816; b=IY6HUZp8b4ZJ3xPU2EFZIDPqddxfFY0hUwJQjPOXda2XOOD7Y8jwAeppoORsCEHfJv 41FG0RoqcZYXoAXKv8TmDr4cf16NJBt/G/M3Wb6sHUndHtLOMguVg3DKfYZGs6xTLIlx XXnhJJFBkQkfMAfZBvp874lHkOzWJ3viXocfJh+89Cu8ClnmftZXWPwEjoAAlI2H+GUv tvKQZSWifPds1bh2pvL+BBaIxju9lJl1e7e3mD66o6DcjrWQp6q7DoErrhXZtj61R0fc 84zrmjMf9BicwKOHnrpD7niSFt5yFjpOWks0T64xUw39KnPSJRpucvEW5CHk/IA+B0yJ qdPg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :message-id:date:subject:cc:to:from:dkim-signature; bh=uZBezdYwZoJCpgxe8z5Qr0nkw3QKcuP16mffR39IMDs=; b=Nbw4C+ZrzfRR5tb+dhJU/8J5rIKAFGIc7jZd5osqHUaKmP56MW+06qn3g5aLUUwjLg TDlaEcAnwL7UFtK63VFGLycarCGxSRb/k83NPPoPVfyW0Erd5SpibjzszK4+d8VeTwp1 l/j7ksPRZkxqZLkE8+VvXKFd6j6QFyuBxlecJKN0JNJHc+g9QVb97EX9DQyAwqV7c90E maI74kYQzrRXYSE5CZ/BbdFdDLHi1OmM9OIM67vqu4UEU7E11eimdZwySY8Plq4PGhtr M2eVULcdBHT6zVkz7IKVmvyPhV4sY5ZbC+0yv+hshxyxwWIHcdzUHyqIoGd2+MLC7ZSR laNw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=Z4Gb+3im; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id p17-20020a056a000a1100b00536ee478380si3056263pfh.7.2022.11.11.07.47.46; Fri, 11 Nov 2022 07:48:08 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=Z4Gb+3im; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234076AbiKKPqJ (ORCPT + 99 others); Fri, 11 Nov 2022 10:46:09 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:58104 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233923AbiKKPqE (ORCPT ); Fri, 11 Nov 2022 10:46:04 -0500 Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id A480625C4D; Fri, 11 Nov 2022 07:46:03 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1668181563; x=1699717563; h=from:to:cc:subject:date:message-id:mime-version: content-transfer-encoding; bh=DmQaptAdDzNbGCp3ivClJtgkBMbzP5Q4OG5xUGDVa0A=; b=Z4Gb+3im8KbmFkDdos4X2EHC1Z0os0MURDxlh+fdbYu3d9s8pftFMlza 19gEUMMzdCtrCN+e7nZ/uC2VwPX+m2jNPtyeotHigFBbWpw43PD3EwHOE dgYRrlRVKuioppTm/QkozmNw1S85ejBqMBaU76jZgFlkyuJohZlV264gO V8irFa2lx0POvvHBOy+9bYbJD8tcezsF7dRId+kUxA+yVsPQEoMd7+959 BI+WAjwSmXWN2nRo0MEbYhZrocWZjVjzTf8lGHIoaORnB4j1XVHuTX1tb pf0yhY9iVJsRp2N2hVCo6Z8NqbZVZMvp3jxDyoF/+FIGy7zAUzWOFUy9g g==; X-IronPort-AV: E=McAfee;i="6500,9779,10528"; a="309246132" X-IronPort-AV: E=Sophos;i="5.96,156,1665471600"; d="scan'208";a="309246132" Received: from orsmga008.jf.intel.com ([10.7.209.65]) by fmsmga102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 11 Nov 2022 07:46:02 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6500,9779,10528"; a="668843583" X-IronPort-AV: E=Sophos;i="5.96,156,1665471600"; d="scan'208";a="668843583" Received: from black.fi.intel.com ([10.237.72.28]) by orsmga008.jf.intel.com with ESMTP; 11 Nov 2022 07:46:00 -0800 Received: by black.fi.intel.com (Postfix, from userid 1003) id 8376B155; Fri, 11 Nov 2022 17:46:24 +0200 (EET) From: Andy Shevchenko To: Andy Shevchenko , linux-kernel@vger.kernel.org, linux-acpi@vger.kernel.org Cc: Greg Kroah-Hartman , "Rafael J. Wysocki" , Daniel Scally , Heikki Krogerus , Sakari Ailus Subject: [PATCH v3 1/3] device property: Get rid of __PROPERTY_ENTRY_ARRAY_EL*SIZE*() Date: Fri, 11 Nov 2022 17:46:19 +0200 Message-Id: <20221111154621.15941-1-andriy.shevchenko@linux.intel.com> X-Mailer: git-send-email 2.35.1 MIME-Version: 1.0 X-Spam-Status: No, score=-7.0 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_EF,RCVD_IN_DNSWL_HI,SPF_HELO_NONE, SPF_NONE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1749215282835179796?= X-GMAIL-MSGID: =?utf-8?q?1749215282835179796?= First of all, _ELEMENT_SIZE() repeats existing sizeof_field() macro. Second, usage of _ARRAY_ELSIZE_LEN() adds unnecessary indirection to the data layout. It's more understandable when the data structure is placed explicitly. That said, get rid of those macros by replacing them with the existing helper and explicit data structure layout. Signed-off-by: Andy Shevchenko Acked-by: Heikki Krogerus --- v3: fixed typo in PROPERTY_ENTRY_REF_ARRAY_LEN() impl (LKP) v2: rebased on latest Linux Next, fixed anon union assignment include/linux/property.h | 34 ++++++++++++++-------------------- 1 file changed, 14 insertions(+), 20 deletions(-) diff --git a/include/linux/property.h b/include/linux/property.h index 5d840299146d..0eab13a5c7df 100644 --- a/include/linux/property.h +++ b/include/linux/property.h @@ -12,6 +12,7 @@ #include #include +#include #include struct device; @@ -311,24 +312,14 @@ struct property_entry { * crafted to avoid gcc-4.4.4's problems with initialization of anon unions * and structs. */ - -#define __PROPERTY_ENTRY_ELEMENT_SIZE(_elem_) \ - sizeof(((struct property_entry *)NULL)->value._elem_[0]) - -#define __PROPERTY_ENTRY_ARRAY_ELSIZE_LEN(_name_, _elsize_, _Type_, \ - _val_, _len_) \ -(struct property_entry) { \ - .name = _name_, \ - .length = (_len_) * (_elsize_), \ - .type = DEV_PROP_##_Type_, \ - { .pointer = _val_ }, \ +#define __PROPERTY_ENTRY_ARRAY_LEN(_name_, _elem_, _Type_, _val_, _len_) \ +(struct property_entry) { \ + .name = _name_, \ + .length = (_len_) * sizeof_field(struct property_entry, value._elem_[0]), \ + .type = DEV_PROP_##_Type_, \ + { .pointer = _val_ }, \ } -#define __PROPERTY_ENTRY_ARRAY_LEN(_name_, _elem_, _Type_, _val_, _len_)\ - __PROPERTY_ENTRY_ARRAY_ELSIZE_LEN(_name_, \ - __PROPERTY_ENTRY_ELEMENT_SIZE(_elem_), \ - _Type_, _val_, _len_) - #define PROPERTY_ENTRY_U8_ARRAY_LEN(_name_, _val_, _len_) \ __PROPERTY_ENTRY_ARRAY_LEN(_name_, u8_data, U8, _val_, _len_) #define PROPERTY_ENTRY_U16_ARRAY_LEN(_name_, _val_, _len_) \ @@ -340,9 +331,12 @@ struct property_entry { #define PROPERTY_ENTRY_STRING_ARRAY_LEN(_name_, _val_, _len_) \ __PROPERTY_ENTRY_ARRAY_LEN(_name_, str, STRING, _val_, _len_) #define PROPERTY_ENTRY_REF_ARRAY_LEN(_name_, _val_, _len_) \ - __PROPERTY_ENTRY_ARRAY_ELSIZE_LEN(_name_, \ - sizeof(struct software_node_ref_args), \ - REF, _val_, _len_) +(struct property_entry) { \ + .name = _name_, \ + .length = (_len_) * sizeof(struct software_node_ref_args), \ + .type = DEV_PROP_REF, \ + { .pointer = _val_ }, \ +} #define PROPERTY_ENTRY_U8_ARRAY(_name_, _val_) \ PROPERTY_ENTRY_U8_ARRAY_LEN(_name_, _val_, ARRAY_SIZE(_val_)) @@ -360,7 +354,7 @@ struct property_entry { #define __PROPERTY_ENTRY_ELEMENT(_name_, _elem_, _Type_, _val_) \ (struct property_entry) { \ .name = _name_, \ - .length = __PROPERTY_ENTRY_ELEMENT_SIZE(_elem_), \ + .length = sizeof_field(struct property_entry, value._elem_[0]), \ .is_inline = true, \ .type = DEV_PROP_##_Type_, \ { .value = { ._elem_[0] = _val_ } }, \