Received: by 2002:a25:1985:0:0:0:0:0 with SMTP id 127csp58843ybz; Fri, 24 Apr 2020 11:46:36 -0700 (PDT) X-Google-Smtp-Source: APiQypJD/lpb6Eg70pWVFPg+mPbF4zkWwwMoYPuAs8ZRhV9PXnoc+0rQ9BBHLI7s1dM/YRXYxnUY X-Received: by 2002:a50:f0dc:: with SMTP id a28mr8231871edm.87.1587753996647; Fri, 24 Apr 2020 11:46:36 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1587753996; cv=none; d=google.com; s=arc-20160816; b=O/qaCbeuq98zf7/cMz31ozx1xrJOVsofBKyzMu2GYttaWvvVCpV6ZhF5vOYj5Ypyjl ITKROEZQ4Gj81LysukvDWJzOlff4+CQsTyCyaZ2h3T9W2hgajw9R4xv1Pymk6dpmwgC0 k3XmCvwT6zPCVO/j+ejOePQ/sMEiSPjiS+WV+oIeI7wBJhvKY7W09EJc9EvRjQ8qZrxU OTdXqclh3x+kxwsrIz/yAbxNe8OeJWNMdxBhm1sPRt8u/hKTwbW2gKoip2iV+vUKf5am wUUq+s+2TWyVM48q1MFu+fX3WSLiFcS6m9vFSGAxqv/vg92eUtjZlbx+MZ17na/BOo7O BUfA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=ih8EylxDxHqz4oxMaem59i/w5Viy9ZWii8xoQ7cZajI=; b=yFVzhv0C5pIave1Km3MMqObQuvZZDF0+azDDkQkaYrr/umtwG2QE5sz2WwKNl2j6Sm MXr4Jphg1/cOKAgC1GlHxzwZuxXTHzoXg3nx+6iEJVbSBcTqQ+Q6lYfdx7sBBsq877bZ Z3yoZoOJOtalyGZLTZ9kJccRTNeMAyG8bk2MHUa66jDSDotO6bc1Dg5JDYQ5xzGC//0C ZAIw6UDlbHEU3h8vSDzvLWI0VjzAIeQIKEl76orW7euioSX5SqNyGftv4Bv7anFSuhHA M0HZVg9J/45US4zOWFPYWO2I1Y2htQj40zXgqKJL3b7SXdSgldivuaRgttt8O10yWhXN 7ncA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@ti.com header.s=ti-com-17Q1 header.b=jugtoXCe; 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=pass (p=QUARANTINE sp=NONE dis=NONE) header.from=ti.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id x17si3105403ejs.372.2020.04.24.11.46.12; Fri, 24 Apr 2020 11:46:36 -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; dkim=pass header.i=@ti.com header.s=ti-com-17Q1 header.b=jugtoXCe; 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=pass (p=QUARANTINE sp=NONE dis=NONE) header.from=ti.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729198AbgDXSor (ORCPT + 99 others); Fri, 24 Apr 2020 14:44:47 -0400 Received: from lelv0142.ext.ti.com ([198.47.23.249]:34748 "EHLO lelv0142.ext.ti.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726813AbgDXSoo (ORCPT ); Fri, 24 Apr 2020 14:44:44 -0400 Received: from fllv0035.itg.ti.com ([10.64.41.0]) by lelv0142.ext.ti.com (8.15.2/8.15.2) with ESMTP id 03OIiR5O095185; Fri, 24 Apr 2020 13:44:27 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ti.com; s=ti-com-17Q1; t=1587753867; bh=ih8EylxDxHqz4oxMaem59i/w5Viy9ZWii8xoQ7cZajI=; h=From:To:CC:Subject:Date:In-Reply-To:References; b=jugtoXCeTkH8oyB9ZJ4LcCr54lO4MtAxrEuqWymdSy/QRmuc9RUEGKQ9JdJAHrFap gscICfjVom+OF6vhk0y4jNJLt1TnPCOqqiOMMLd6ZnWWDjZq+7aOicZNjs2FZfQQ5G p+BvKbv58G9tODXoI7E/RGOcOF1MgLh0uS0b4Rsk= Received: from DLEE114.ent.ti.com (dlee114.ent.ti.com [157.170.170.25]) by fllv0035.itg.ti.com (8.15.2/8.15.2) with ESMTP id 03OIiRak085428; Fri, 24 Apr 2020 13:44:27 -0500 Received: from DLEE108.ent.ti.com (157.170.170.38) by DLEE114.ent.ti.com (157.170.170.25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1979.3; Fri, 24 Apr 2020 13:44:27 -0500 Received: from lelv0327.itg.ti.com (10.180.67.183) by DLEE108.ent.ti.com (157.170.170.38) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1979.3 via Frontend Transport; Fri, 24 Apr 2020 13:44:27 -0500 Received: from pratyush-OptiPlex-790.dhcp.ti.com (ileax41-snat.itg.ti.com [10.172.224.153]) by lelv0327.itg.ti.com (8.15.2/8.15.2) with ESMTP id 03OIiAa9047967; Fri, 24 Apr 2020 13:44:23 -0500 From: Pratyush Yadav To: Tudor Ambarus , Miquel Raynal , Richard Weinberger , Vignesh Raghavendra , Mark Brown , Nicolas Ferre , Alexandre Belloni , Ludovic Desroches , , , , CC: Pratyush Yadav , Sekhar Nori Subject: [PATCH v4 03/16] spi: spi-mem: allow specifying a command's extension Date: Sat, 25 Apr 2020 00:13:57 +0530 Message-ID: <20200424184410.8578-4-p.yadav@ti.com> X-Mailer: git-send-email 2.25.0 In-Reply-To: <20200424184410.8578-1-p.yadav@ti.com> References: <20200424184410.8578-1-p.yadav@ti.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/plain X-EXCLAIMER-MD-CONFIG: e1e8a2fd-e40a-4ac6-ac9b-f7e9cc9ee180 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org In xSPI mode, flashes expect 2-byte opcodes. The second byte is called the "command extension". There can be 3 types of extensions in xSPI: repeat, invert, and hex. When the extension type is "repeat", the same opcode is sent twice. When it is "invert", the second byte is the inverse of the opcode. When it is "hex" an additional opcode byte based is sent with the command whose value can be anything. So, make opcode a 16-bit value and add a 'nbytes', similar to how multiple address widths are handled. Signed-off-by: Pratyush Yadav --- include/linux/spi/spi-mem.h | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/include/linux/spi/spi-mem.h b/include/linux/spi/spi-mem.h index e3dcb956bf61..731bb64c6ba6 100644 --- a/include/linux/spi/spi-mem.h +++ b/include/linux/spi/spi-mem.h @@ -69,6 +69,8 @@ enum spi_mem_data_dir { /** * struct spi_mem_op - describes a SPI memory operation + * @cmd.nbytes: number of opcode bytes (only 1 or 2 are valid). The opcode is + * sent MSB-first. * @cmd.buswidth: number of IO lines used to transmit the command * @cmd.opcode: operation opcode * @cmd.dtr: whether the command opcode should be sent in DTR mode or not @@ -94,9 +96,10 @@ enum spi_mem_data_dir { */ struct spi_mem_op { struct { + u8 nbytes; u8 buswidth; u8 dtr : 1; - u8 opcode; + u16 opcode; } cmd; struct { -- 2.25.0