Received: by 2002:a25:868d:0:0:0:0:0 with SMTP id z13csp691462ybk; Wed, 20 May 2020 09:33:26 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwY2K4j11QB90sKSNUDpG905yB3rQ9QqOpidoDgIlACj2hF3F/fp4OrcrD1H3GBL17QJzm4 X-Received: by 2002:a50:955a:: with SMTP id v26mr4302944eda.5.1589992406040; Wed, 20 May 2020 09:33:26 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1589992406; cv=none; d=google.com; s=arc-20160816; b=ioyMmBPzYSUHVnKjkNgTIb5Btaxu5BwZdewu262Ky4rEWgBXcX2YRS/tGvG2xFLJDc mngMBGbH1kNzlBgixpDv+MPLpxBzPr3CAxh7ikv/0t+XOLfrcZwVADoJnq6yhvvcznYn fyh0d4FaX/W8ZAA9IggdH9SXOgqIs3A228ZFoC4erEhj78V1LRn599aoYm5V5yehoYp6 6eH3s3V8BEWYDMvvlPpPVQGo13mn2V3QKShn1EoftKN+9MUylzkhP6bDFZMOPVN0V7Pl EJE7skkLw04x7iJfRklgyubBtl1IzuwV79ZJJwXmiB6PGya0ZNPiG0cM1iWGa+iBVadO BL2g== 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=vMR1J84c/X9DcMtd3o/Coldhh8IsXqCNWSRHtDe2Jrc=; b=UMROcaVrd8W8rsLyrClm7+8BmOZfvktwxDmFoiy3pAhUKWENulC7/45nfifVzgVtP0 rur0gJ2PpLYM2nIj94bx8ywrnD8NXK7MqAbCIwNZYVpjaOg6a7S4hg2i/nU3Rg1992Cm OutDfZK1nep4kDptwFBEAfBFylJFBejzHXevAPoy6J/e1a0L1kpKoCRrUKWkqY562zPP +2Ctj7g0LEzWQu4GjdGsVSdZCEUQSPOKYBneGZrzkbL6G+5jsC246NLAElPABORcdnnI /MsNfWDmuibRILIrGXqKcCoih+vpIcLQodokHbTkVsYLUpoRoTROjNsBgNaJU+hliTGD mPtA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@ti.com header.s=ti-com-17Q1 header.b=WdDh0ZEo; 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 x7si1944466eje.542.2020.05.20.09.33.03; Wed, 20 May 2020 09:33:26 -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=WdDh0ZEo; 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 S1726846AbgETQbh (ORCPT + 99 others); Wed, 20 May 2020 12:31:37 -0400 Received: from lelv0142.ext.ti.com ([198.47.23.249]:53096 "EHLO lelv0142.ext.ti.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726819AbgETQbf (ORCPT ); Wed, 20 May 2020 12:31:35 -0400 Received: from lelv0265.itg.ti.com ([10.180.67.224]) by lelv0142.ext.ti.com (8.15.2/8.15.2) with ESMTP id 04KGVJjn007499; Wed, 20 May 2020 11:31:19 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ti.com; s=ti-com-17Q1; t=1589992279; bh=vMR1J84c/X9DcMtd3o/Coldhh8IsXqCNWSRHtDe2Jrc=; h=From:To:CC:Subject:Date:In-Reply-To:References; b=WdDh0ZEoNDocoY12jduVGkFXDUk/AoWfpjpmLMvJ+tXXz5WOs5r9wg5v6K0GlS94u 6C6tFPoBW+taznJs/1SiedUdp+fqcTZj4zPD3w9Fyr1f3pMXCpxW+AtxKiKoYKVmhN 4keDvAbhAhqWMAVW3k3FqvVY3ptyXMYfPpCtH5eY= Received: from DFLE103.ent.ti.com (dfle103.ent.ti.com [10.64.6.24]) by lelv0265.itg.ti.com (8.15.2/8.15.2) with ESMTPS id 04KGVJng077217 (version=TLSv1.2 cipher=AES256-GCM-SHA384 bits=256 verify=FAIL); Wed, 20 May 2020 11:31:19 -0500 Received: from DFLE108.ent.ti.com (10.64.6.29) by DFLE103.ent.ti.com (10.64.6.24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1979.3; Wed, 20 May 2020 11:31:19 -0500 Received: from fllv0040.itg.ti.com (10.64.41.20) by DFLE108.ent.ti.com (10.64.6.29) 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; Wed, 20 May 2020 11:31:19 -0500 Received: from pratyush-OptiPlex-790.dhcp.ti.com (ileax41-snat.itg.ti.com [10.172.224.153]) by fllv0040.itg.ti.com (8.15.2/8.15.2) with ESMTP id 04KGUsxT001551; Wed, 20 May 2020 11:31:15 -0500 From: Pratyush Yadav To: Tudor Ambarus , Miquel Raynal , Richard Weinberger , Vignesh Raghavendra , Mark Brown , Nicolas Ferre , Alexandre Belloni , Ludovic Desroches , Matthias Brugger , , , , , CC: Pratyush Yadav , Sekhar Nori , Boris Brezillon , Mason Yang Subject: [PATCH v6 04/19] spi: spi-mem: allow specifying a command's extension Date: Wed, 20 May 2020 22:00:38 +0530 Message-ID: <20200520163053.24357-5-p.yadav@ti.com> X-Mailer: git-send-email 2.25.0 In-Reply-To: <20200520163053.24357-1-p.yadav@ti.com> References: <20200520163053.24357-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.26.2