Received: by 2002:a05:6359:c8b:b0:c7:702f:21d4 with SMTP id go11csp5886641rwb; Wed, 21 Sep 2022 14:02:55 -0700 (PDT) X-Google-Smtp-Source: AMsMyM7AQ3s/HUzo84iFnQ5aS4fDJB7CKHHVZEksk28PQTrM+6LVLYQoTzGC6Wj4zZApLw6BvoKe X-Received: by 2002:a63:141:0:b0:43a:3851:b2ba with SMTP id 62-20020a630141000000b0043a3851b2bamr108517pgb.90.1663794175599; Wed, 21 Sep 2022 14:02:55 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1663794175; cv=none; d=google.com; s=arc-20160816; b=gerDNQnBo6H6sHf1qBLtvu8WQxI5sKcQL5x8TbOjFdrmNeXj2cpJNAl6Lp7HHdeZGw EsFvu1wmS6XB8MVlvZicrKwCuwf4GkC8Ioj7F0u53F1YA8fSBpiQyiHp318K7L5Yo4oF ykTAXs12R6YztwokQq/DzOHiQE0tZ1THmuJrl/P9QX/HCpXVaDVNXrIdbyCz1PB+ejG0 C9K8B6fD2AIVOR6/2bpX7ZBqi3s0ux1Jx5jXU93g7YWdOzeV079T5NizUk5OPITct4tr Fsgf+PeKKfkMgNAeKojVYsJgDYS9hSSwtmFLVF8+vqxn5M6mogHKqfi1QYRvxygmeR6y Rh1w== 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=FDlLuVpKOj6ZrtAU5O4GkA8AoXrk//8oNVwm5whVHF4=; b=M2rudbVb1hA8ZXJi9zPt6kNeT5cH3pdkdFBpFqEVO9Zs804ta54sCBM23dYiHX3lL5 toMcX7IIjazezT4XASDoie1lotZ8eaNviPgwzXQrViaBDK+eq/1qjEuLGHLblDO+8Mr5 14Dja2WfQ6ngqn6cPewS50o+qD5m3um3Bf1V/oGYlJMDQKxYBrcMdcouktBB1GE2AB2V v6Uuss9SxP8y2xEBiKE7KnsmtQXRgS+nlQJS/Yl4hVqz49BekDmaDsJsFWq+ImElkstV h0CwppDxcGrbeVhox5raVglsycWmEfz1o1QgfLH0IIojK7uEUuiXrdzDVyNn9LGcDRFW 9iTQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=bjIaYva4; 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 Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id t11-20020a170902e84b00b0017828ae631asi4195881plg.604.2022.09.21.14.02.43; Wed, 21 Sep 2022 14:02:55 -0700 (PDT) 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=bjIaYva4; 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 S229667AbiIUUpX (ORCPT + 99 others); Wed, 21 Sep 2022 16:45:23 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:41010 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229498AbiIUUpV (ORCPT ); Wed, 21 Sep 2022 16:45:21 -0400 Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 0EA499DFAB; Wed, 21 Sep 2022 13:45:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1663793120; x=1695329120; h=from:to:cc:subject:date:message-id:mime-version: content-transfer-encoding; bh=l/G74zZaxudvWZKszn/5aJm/frFg9KrxRccC2qSWFEw=; b=bjIaYva4QR5cDeFbKI3HcB7aH9MBkDU2XgCmo9jhGsvXDR+cLm++QRI8 iup/gcPX9HYhtKJDBNy/ahd8jUakgUqP5PUP9o3Rc20gaAmZbJD7+TA7f E8KMLSyw0bMpypP2yOKIyyiYvD3wqKwMVNGfWMNPyyjQYW9qawlFnWotX ABIzUnYcM9I7CnxkqalDn+tSjcQIQwEljBEqd5oNUgKN79b3luKQqm410 CTgnEzje2rhDL/i9ubnuXPPXMWQsduMkMpF7K8bxUflCblkFnQIg7/ysG w+v52puIWtqJBxz5DR0EVIxBPlRQHLZhkJJJ4htlS4nBj1fwcWLe+2SOg g==; X-IronPort-AV: E=McAfee;i="6500,9779,10477"; a="287196383" X-IronPort-AV: E=Sophos;i="5.93,334,1654585200"; d="scan'208";a="287196383" Received: from fmsmga003.fm.intel.com ([10.253.24.29]) by orsmga101.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 21 Sep 2022 13:45:19 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.93,334,1654585200"; d="scan'208";a="708610769" Received: from black.fi.intel.com ([10.237.72.28]) by FMSMGA003.fm.intel.com with ESMTP; 21 Sep 2022 13:45:17 -0700 Received: by black.fi.intel.com (Postfix, from userid 1003) id 516AAF7; Wed, 21 Sep 2022 23:45:35 +0300 (EEST) From: Andy Shevchenko To: Mark Brown , linux-spi@vger.kernel.org, linux-kernel@vger.kernel.org Cc: Wei Yongjun , Jonathan Cameron , linux-iio@vger.kernel.org, Andy Shevchenko Subject: [PATCH v1 1/1] spi: Introduce spi_get_device_match_data() helper Date: Wed, 21 Sep 2022 23:45:20 +0300 Message-Id: <20220921204520.23984-1-andriy.shevchenko@linux.intel.com> X-Mailer: git-send-email 2.35.1 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-4.3 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_EF,RCVD_IN_DNSWL_MED, RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL,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 The proposed spi_get_device_match_data() helper is for retrieving a driver data associated with the ID in an ID table. First, it tries to get driver data of the device enumerated by firmware interface (usually Device Tree or ACPI). If none is found it falls back to the SPI ID table matching. Signed-off-by: Andy Shevchenko --- drivers/spi/spi.c | 12 ++++++++++++ include/linux/spi/spi.h | 3 +++ 2 files changed, 15 insertions(+) diff --git a/drivers/spi/spi.c b/drivers/spi/spi.c index ad254b94308e..a0947d63afbc 100644 --- a/drivers/spi/spi.c +++ b/drivers/spi/spi.c @@ -360,6 +360,18 @@ const struct spi_device_id *spi_get_device_id(const struct spi_device *sdev) } EXPORT_SYMBOL_GPL(spi_get_device_id); +const void *spi_get_device_match_data(const struct spi_device *sdev) +{ + const void *match; + + match = device_get_match_data(&sdev->dev); + if (match) + return match; + + return (const void *)spi_get_device_id(sdev)->driver_data; +} +EXPORT_SYMBOL_GPL(spi_get_device_match_data); + static int spi_match_device(struct device *dev, struct device_driver *drv) { const struct spi_device *spi = to_spi_device(dev); diff --git a/include/linux/spi/spi.h b/include/linux/spi/spi.h index 6ea889df0813..f2565c24ef27 100644 --- a/include/linux/spi/spi.h +++ b/include/linux/spi/spi.h @@ -1510,6 +1510,9 @@ extern void spi_unregister_device(struct spi_device *spi); extern const struct spi_device_id * spi_get_device_id(const struct spi_device *sdev); +extern const void * +spi_get_device_match_data(const struct spi_device *sdev); + static inline bool spi_transfer_is_last(struct spi_controller *ctlr, struct spi_transfer *xfer) { -- 2.35.1