Received: by 2002:a25:1985:0:0:0:0:0 with SMTP id 127csp1492387ybz; Wed, 29 Apr 2020 23:49:45 -0700 (PDT) X-Google-Smtp-Source: APiQypJoCCzyqVhjIpS9hwRFacpXJPmALbmjtEd0fqDCQYz7cW/42k59fsSfcAaK6/7aYN2bc+Mu X-Received: by 2002:a05:6402:1d37:: with SMTP id dh23mr1284896edb.287.1588229384837; Wed, 29 Apr 2020 23:49:44 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1588229384; cv=none; d=google.com; s=arc-20160816; b=nGtrFEFPQU8Nygx8nap8Z0JyAQ4eGtrJlRjS4DgUW/NSnQVPXt2/LDVaeMg6iyhGx7 1Ms9QF+HkLNcrXVKkfNadEpaAvL1PaYnogzlpY3a14LqbIm6aXNU6CIlxIpuupUlpr3Q M8TMxcVCxJ9+QSE5O5fZJI2U9OTKBZCR+CQYMSULZBb4UR2VObQ5bAjx/ChEJ99QqZMS NzDbGZom9kjk3y8bTq3RdsWWLDR8Rt/0eNLaYaU82rAqVHcTzs4NcD2vb7XGy1EY7zij ki45F994YcHQo4TWZ9bQhoZmSjliuJW7j4Vyw4k0fG7T0SUPiVzXpcMNP/3MqxXCVGKw WCbA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:message-id:date :subject:cc:to:from:ironport-sdr:ironport-sdr; bh=jPO/9kIjp5cgAlMQOKKPAex1soX73RV0jr+zDZfZ/Js=; b=Tw5EKKyLlfS/oaYOC5ETgr05ZcT64X2/sET05xO1hDlbGIucNlFV4e/vIH7QOazRhb mo22EDuIcnFSWIpISYpbbeyUYqfERTZUhIslqaT3155YMdnxpzFzNuZRUQny2sa6uXO0 V7ETT9tJA0Bh/2vQJ7gmiktmwq4HdNl2d3jMxecu3baTmF+pqWNbKhbitc4r8e0Ng2PB kjftXQ49TLe64zX5QDKSwZEIznV8Gq3CbwHcBsLkKW4rRqDBGi6/CHFpWC+N28J4eDhc Thm10ruiN8qJKA46X40nd9UxXOuOR2BFJwq71iq/1CmRwHq6DcFy1bipuixRR5LaRn0T 9PhQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id g17si5104202ejm.271.2020.04.29.23.49.01; Wed, 29 Apr 2020 23:49:44 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726669AbgD3Gqp (ORCPT + 99 others); Thu, 30 Apr 2020 02:46:45 -0400 Received: from mga12.intel.com ([192.55.52.136]:56943 "EHLO mga12.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726583AbgD3Gqm (ORCPT ); Thu, 30 Apr 2020 02:46:42 -0400 IronPort-SDR: AHLJ0u0UKcP0CTx7YxbsmtVCoA/hWIZjvWrVRaeyLiSycRKDLDPtcTB9P/I2RuqMab0WMwrka7 92ilUUy78t7Q== X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga008.fm.intel.com ([10.253.24.58]) by fmsmga106.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 29 Apr 2020 23:46:41 -0700 IronPort-SDR: R6ISdZ2f9XRQ5xgWSTaEngdpVMRVh9/G2mNkjDkKd8nawJkSJtEX+kWnsuImzb8RvA6WitYCJl RPDYhyKb3ZVQ== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.73,334,1583222400"; d="scan'208";a="249662786" Received: from bard-ubuntu.sh.intel.com ([10.239.13.33]) by fmsmga008.fm.intel.com with ESMTP; 29 Apr 2020 23:46:38 -0700 From: Bard Liao To: alsa-devel@alsa-project.org, vkoul@kernel.org Cc: linux-kernel@vger.kernel.org, tiwai@suse.de, broonie@kernel.org, gregkh@linuxfoundation.org, jank@cadence.com, srinivas.kandagatla@linaro.org, rander.wang@linux.intel.com, ranjani.sridharan@linux.intel.com, hui.wang@canonical.com, pierre-louis.bossart@linux.intel.com, sanyog.r.kale@intel.com, slawomir.blauciak@intel.com, mengdong.lin@intel.com, bard.liao@intel.com Subject: [PATCH 2/3] soundwire: bus_type: introduce sdw_slave_type and sdw_master_type Date: Thu, 30 Apr 2020 02:51:44 +0800 Message-Id: <20200429185145.12891-3-yung-chuan.liao@linux.intel.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20200429185145.12891-1-yung-chuan.liao@linux.intel.com> References: <20200429185145.12891-1-yung-chuan.liao@linux.intel.com> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Pierre-Louis Bossart this is a preparatory patch before the introduction of the sdw_master_type. The SoundWire slave support is slightly modified with the use of a sdw_slave_type, and the uevent handling move to slave.c (since it's not necessary for the master). No functionality change other than moving code around. Signed-off-by: Pierre-Louis Bossart Signed-off-by: Bard Liao --- drivers/soundwire/bus_type.c | 19 +++++++++++++------ drivers/soundwire/slave.c | 8 +++++++- include/linux/soundwire/sdw_type.h | 9 ++++++++- 3 files changed, 28 insertions(+), 8 deletions(-) diff --git a/drivers/soundwire/bus_type.c b/drivers/soundwire/bus_type.c index 17f096dd6806..2c1a19caba51 100644 --- a/drivers/soundwire/bus_type.c +++ b/drivers/soundwire/bus_type.c @@ -33,13 +33,21 @@ sdw_get_device_id(struct sdw_slave *slave, struct sdw_driver *drv) static int sdw_bus_match(struct device *dev, struct device_driver *ddrv) { - struct sdw_slave *slave = dev_to_sdw_dev(dev); - struct sdw_driver *drv = drv_to_sdw_driver(ddrv); + struct sdw_slave *slave; + struct sdw_driver *drv; + int ret = 0; + + if (is_sdw_slave(dev)) { + slave = dev_to_sdw_dev(dev); + drv = drv_to_sdw_driver(ddrv); - return !!sdw_get_device_id(slave, drv); + ret = !!sdw_get_device_id(slave, drv); + } + return ret; } -int sdw_slave_modalias(const struct sdw_slave *slave, char *buf, size_t size) +static int sdw_slave_modalias(const struct sdw_slave *slave, char *buf, + size_t size) { /* modalias is sdw:mp */ @@ -47,7 +55,7 @@ int sdw_slave_modalias(const struct sdw_slave *slave, char *buf, size_t size) slave->id.mfg_id, slave->id.part_id); } -static int sdw_uevent(struct device *dev, struct kobj_uevent_env *env) +int sdw_slave_uevent(struct device *dev, struct kobj_uevent_env *env) { struct sdw_slave *slave = dev_to_sdw_dev(dev); char modalias[32]; @@ -63,7 +71,6 @@ static int sdw_uevent(struct device *dev, struct kobj_uevent_env *env) struct bus_type sdw_bus_type = { .name = "soundwire", .match = sdw_bus_match, - .uevent = sdw_uevent, }; EXPORT_SYMBOL_GPL(sdw_bus_type); diff --git a/drivers/soundwire/slave.c b/drivers/soundwire/slave.c index aace57fae7f8..ed068a004bd9 100644 --- a/drivers/soundwire/slave.c +++ b/drivers/soundwire/slave.c @@ -14,6 +14,12 @@ static void sdw_slave_release(struct device *dev) kfree(slave); } +struct device_type sdw_slave_type = { + .name = "sdw_slave", + .release = sdw_slave_release, + .uevent = sdw_slave_uevent, +}; + static int sdw_slave_add(struct sdw_bus *bus, struct sdw_slave_id *id, struct fwnode_handle *fwnode) { @@ -41,9 +47,9 @@ static int sdw_slave_add(struct sdw_bus *bus, id->class_id, id->unique_id); } - slave->dev.release = sdw_slave_release; slave->dev.bus = &sdw_bus_type; slave->dev.of_node = of_node_get(to_of_node(fwnode)); + slave->dev.type = &sdw_slave_type; slave->bus = bus; slave->status = SDW_SLAVE_UNATTACHED; init_completion(&slave->enumeration_complete); diff --git a/include/linux/soundwire/sdw_type.h b/include/linux/soundwire/sdw_type.h index aaa7f4267c14..52eb66cd11bc 100644 --- a/include/linux/soundwire/sdw_type.h +++ b/include/linux/soundwire/sdw_type.h @@ -5,6 +5,13 @@ #define __SOUNDWIRE_TYPES_H extern struct bus_type sdw_bus_type; +extern struct device_type sdw_slave_type; +extern struct device_type sdw_master_type; + +static inline int is_sdw_slave(const struct device *dev) +{ + return dev->type == &sdw_slave_type; +} #define drv_to_sdw_driver(_drv) container_of(_drv, struct sdw_driver, driver) @@ -14,7 +21,7 @@ extern struct bus_type sdw_bus_type; int __sdw_register_driver(struct sdw_driver *drv, struct module *owner); void sdw_unregister_driver(struct sdw_driver *drv); -int sdw_slave_modalias(const struct sdw_slave *slave, char *buf, size_t size); +int sdw_slave_uevent(struct device *dev, struct kobj_uevent_env *env); /** * module_sdw_driver() - Helper macro for registering a Soundwire driver -- 2.17.1