From patchwork Fri Nov 1 12:35:56 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jarkko Nikula X-Patchwork-Id: 287803 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 897A22C0082 for ; Fri, 1 Nov 2013 23:36:56 +1100 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753243Ab3KAMgz (ORCPT ); Fri, 1 Nov 2013 08:36:55 -0400 Received: from mga03.intel.com ([143.182.124.21]:52892 "EHLO mga03.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753196Ab3KAMgz (ORCPT ); Fri, 1 Nov 2013 08:36:55 -0400 Received: from azsmga001.ch.intel.com ([10.2.17.19]) by azsmga101.ch.intel.com with ESMTP; 01 Nov 2013 05:36:54 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="4.93,535,1378882800"; d="scan'208";a="383304601" Received: from mylly.fi.intel.com (HELO mylly.fi.intel.com.) ([10.237.72.70]) by azsmga001.ch.intel.com with ESMTP; 01 Nov 2013 05:36:51 -0700 From: Jarkko Nikula To: "Rafael J. Wysocki" , Mark Brown , Wolfram Sang Cc: linux-spi@vger.kernel.org, linux-i2c@vger.kernel.org, alsa-devel@alsa-project.org, linux-acpi@vger.kernel.org, Jarkko Nikula Subject: [PATCHv2 3/3] spi: Use stable dev_name for ACPI enumerated SPI slaves Date: Fri, 1 Nov 2013 14:35:56 +0200 Message-Id: <1383309356-25430-4-git-send-email-jarkko.nikula@linux.intel.com> X-Mailer: git-send-email 1.8.4.rc3 In-Reply-To: <1383309356-25430-1-git-send-email-jarkko.nikula@linux.intel.com> References: <1382703540-3769-1-git-send-email-jarkko.nikula@linux.intel.com> <1383309356-25430-1-git-send-email-jarkko.nikula@linux.intel.com> Sender: linux-i2c-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-i2c@vger.kernel.org Current spi bus_num.chip_select "spix.y" based device naming scheme may not be stable enough to be used in name based matching, for instance within ALSA SoC subsystem. This can be problem in PC kind of platforms if there are changes in SPI bus configuration, amount of busses or probe order. This patch addresses the problem by using the ACPI device name with "spi-" prefix for ACPI enumerated SPI slave. For them device name "spix.y" becomes "spi-INTABCD:ij". Signed-off-by: Jarkko Nikula Acked-by: Mark Brown --- drivers/spi/spi.c | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/drivers/spi/spi.c b/drivers/spi/spi.c index 740f9dd..4c0c801 100644 --- a/drivers/spi/spi.c +++ b/drivers/spi/spi.c @@ -38,6 +38,7 @@ #include #include #include +#include static void spidev_release(struct device *dev) { @@ -352,6 +353,21 @@ struct spi_device *spi_alloc_device(struct spi_master *master) } EXPORT_SYMBOL_GPL(spi_alloc_device); +void spi_dev_set_name(struct spi_device *spi) +{ + if (ACPI_HANDLE(&spi->dev)) { + struct acpi_device *adev; + if (!acpi_bus_get_device(ACPI_HANDLE(&spi->dev), &adev)) { + dev_set_name(&spi->dev, "spi-%s", + dev_name(&adev->dev)); + return; + } + } + + dev_set_name(&spi->dev, "%s.%u", dev_name(&spi->master->dev), + spi->chip_select); +} + /** * spi_add_device - Add spi_device allocated with spi_alloc_device * @spi: spi_device to register @@ -378,9 +394,7 @@ int spi_add_device(struct spi_device *spi) } /* Set the bus ID string */ - dev_set_name(&spi->dev, "%s.%u", dev_name(&spi->master->dev), - spi->chip_select); - + spi_dev_set_name(spi); /* We need to make sure there's no other device with this * chipselect **BEFORE** we call setup(), else we'll trash