Received: by 2002:ac0:a5b6:0:0:0:0:0 with SMTP id m51-v6csp4481759imm; Wed, 30 May 2018 06:31:36 -0700 (PDT) X-Google-Smtp-Source: ADUXVKJeo0eHghS3Lz2MImoU0I+COx8BALDd0aqCWfgGro8MzkUyl0vDYtST9uIdGPCFk6btk1a+ X-Received: by 2002:a63:65c4:: with SMTP id z187-v6mr2233210pgb.180.1527687096167; Wed, 30 May 2018 06:31:36 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1527687096; cv=none; d=google.com; s=arc-20160816; b=ldhuOzgQcloG5G5s6Lz2D2ANbsxvgqlgSQ/+ShDp2CEj9ccksWgykzd2fzxbjTXQ5z nCWqd6EOMdRO4+miYKXvAJ7wjmQux9ydyYAJSlV8wNLVYkwUHL8vlg2ArdbxpWLZubKY j6pRoK0vPagsn/vp+IRxKB+DxnN/++tNqKvlemPqGIJ5LQ4BWDtaiGVjp4HfXETMzF1D lZZM+RTfUb/GaIUNamBba7sX55yo+h2JpYhdKPrYdTxY6jwRqUAhjNRmktg6pGrGfuYK gKgDjiBwJTMFJUopyaWkpBSqeGauV6J0CGaDX3ZEaj3fHJrlVsyOy10rOo/6o9PHK3F/ Uy9A== 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:dkim-signature:arc-authentication-results; bh=XJnkbHO7zE+WZc2rmB8EKbKKKkzbn5h9YfvZCpOzqJM=; b=XWElL6tethGD/8l0G4mCLpf8vePoqNeOR4B4AzDbgkgY+jU/XvKRFO5+6TA88kTQau lzi+tKn+fuh3BJMkj6/ruJHh5Gbc7XFNXgmOWNyhGP2DtXTvVs7A5BpZtECs7jFwwskk JkVy3NWsU4Udtsk6f9YvOMRQ3RjAdw+vJZNPCkzArYkJV/1VRMVijQaC7soRnna9q08+ SYqIUUWfwQVfUFb2mY3QovfyeQroA0yxvlm3Uiy9czDe1EhueR0PGuBfTC7YDwSgo6dY 8iDThPRk9dGK5+OE2+eWEEsKXw34SWzz6NdXdJm2+5Ah64op6AbIBt/0aLjFGftJ1o3d cq/Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@as-electronics.de header.s=strato-dkim-0002 header.b=AkKU4BoF; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id d24-v6si34847226plr.302.2018.05.30.06.31.20; Wed, 30 May 2018 06:31:36 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=fail header.i=@as-electronics.de header.s=strato-dkim-0002 header.b=AkKU4BoF; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753369AbeE3N2D (ORCPT + 99 others); Wed, 30 May 2018 09:28:03 -0400 Received: from mo4-p05-ob.smtp.rzone.de ([85.215.255.133]:12033 "EHLO mo4-p05-ob.smtp.rzone.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751547AbeE3N2B (ORCPT ); Wed, 30 May 2018 09:28:01 -0400 X-Greylist: delayed 665 seconds by postgrey-1.27 at vger.kernel.org; Wed, 30 May 2018 09:28:01 EDT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; t=1527686880; s=strato-dkim-0002; d=as-electronics.de; h=References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From: X-RZG-CLASS-ID:X-RZG-AUTH:From:Subject:Sender; bh=XJnkbHO7zE+WZc2rmB8EKbKKKkzbn5h9YfvZCpOzqJM=; b=AkKU4BoFCPFwvG+O4DR8/vCE05iXimO775kHCCV1NXt+WERvy8vR/u+H6Taj1TVoZV xjlrzcbIy6Ty7X+vtm6R3kqjcHhf0ERm7QFodZuGVex6sCYj5Osx/veNWNT6mNOcjL7X P2+lrtKg3wNtNBZzjrgPz3IbN6piygofNfq325UzO0oDtCPCz9//ZAOrF22eoHvj+vWm Rj/7UUfPjLT5ZReduhz8gEwZtcRovaG9AmTIOPsQ4VYZX4JSdhLFJZmA7anwE3dQWgun OoaD3KLgf+HCW6iJRJfznoQrZLsXINh7nOpbYljFA0nRT+Zo43rrremOVeKAf8VD8TdN qAkw== X-RZG-AUTH: ":LX8JdEmkW/4tAFwMkcNJIloh1hrA5u3owhPk7bdT5Fx22AatU+eLaHfutoZdl+X9BETxn4/4+IVqx7oJE8yFU0CFyS7Uq+kmFDrWBCuLGqeCYZgEsPw=" X-RZG-CLASS-ID: mo05 Received: from fs-work.fritz.box by smtp.strato.de (RZmta 43.8 AUTH) with ESMTPSA id z034bcu4UDGXPOX (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA (curve secp521r1 with 521 ECDH bits, eq. 15360 bits RSA)) (Client did not present a certificate); Wed, 30 May 2018 15:16:33 +0200 (CEST) From: Frieder Schrempf To: linux-mtd@lists.infradead.org, boris.brezillon@bootlin.com, linux-spi@vger.kernel.org Cc: dwmw2@infradead.org, computersforpeace@gmail.com, marek.vasut@gmail.com, richard@nod.at, miquel.raynal@bootlin.com, broonie@kernel.org, david.wolfe@nxp.com, fabio.estevam@nxp.com, prabhakar.kushwaha@nxp.com, yogeshnarayan.gaur@nxp.com, han.xu@nxp.com, Frieder Schrempf , linux-kernel@vger.kernel.org Subject: [PATCH 01/11] spi: spi-mem: Extend the SPI mem interface to set a custom memory name Date: Wed, 30 May 2018 15:14:30 +0200 Message-Id: <1527686082-15142-2-git-send-email-frieder.schrempf@exceet.de> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1527686082-15142-1-git-send-email-frieder.schrempf@exceet.de> References: <1527686082-15142-1-git-send-email-frieder.schrempf@exceet.de> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org When porting (Q)SPI controller drivers from the MTD layer to the SPI layer, the naming scheme for the memory devices changes. To be able to keep compatibility with the old drivers naming scheme, a function is added to the SPI mem interface to let controller drivers set a custom name for the memory. Example for the FSL QSPI driver: Name with the old driver: 21e0000.qspi, or with multiple devices: 21e0000.qspi-0, 21e0000.qspi-1, ... Name with the new driver without spi_mem_get_name: spi4.0 Signed-off-by: Frieder Schrempf --- drivers/spi/spi-mem.c | 25 +++++++++++++++++++++++++ include/linux/spi/spi-mem.h | 3 +++ 2 files changed, 28 insertions(+) diff --git a/drivers/spi/spi-mem.c b/drivers/spi/spi-mem.c index 990770d..5e9af47 100644 --- a/drivers/spi/spi-mem.c +++ b/drivers/spi/spi-mem.c @@ -311,6 +311,31 @@ int spi_mem_exec_op(struct spi_mem *mem, const struct spi_mem_op *op) EXPORT_SYMBOL_GPL(spi_mem_exec_op); /** + * spi_mem_get_name() - Let drivers using the SPI mem interface specify a + * custom name for the memory to avoid compatibility + * issues with ported drivers. + * @mem: the SPI memory + * + * When porting (Q)SPI controller drivers from the MTD layer to the SPI + * layer, the naming scheme for the memory devices changes. To be able to + * keep compatibility with the old drivers naming scheme, this function can + * be used to get a custom name from the controller driver. + * If no custom name is available, the name of the SPI device is returned. + * + * Return: a char array that contains the name for the flash memory + */ +const char *spi_mem_get_name(struct spi_mem *mem) +{ + struct spi_controller *ctlr = mem->spi->controller; + + if (ctlr->mem_ops && ctlr->mem_ops->get_name) + return ctlr->mem_ops->get_name(mem); + + return dev_name(&mem->spi->dev); +} +EXPORT_SYMBOL_GPL(spi_mem_get_name); + +/** * spi_mem_adjust_op_size() - Adjust the data size of a SPI mem operation to * match controller limitations * @mem: the SPI memory diff --git a/include/linux/spi/spi-mem.h b/include/linux/spi/spi-mem.h index 4fa34a2..f1912d3 100644 --- a/include/linux/spi/spi-mem.h +++ b/include/linux/spi/spi-mem.h @@ -178,6 +178,7 @@ struct spi_controller_mem_ops { const struct spi_mem_op *op); int (*exec_op)(struct spi_mem *mem, const struct spi_mem_op *op); + const char *(*get_name)(struct spi_mem *mem); }; /** @@ -236,6 +237,8 @@ bool spi_mem_supports_op(struct spi_mem *mem, int spi_mem_exec_op(struct spi_mem *mem, const struct spi_mem_op *op); +const char *spi_mem_get_name(struct spi_mem *mem); + int spi_mem_driver_register_with_owner(struct spi_mem_driver *drv, struct module *owner); -- 2.7.4