Received: by 2002:a25:868d:0:0:0:0:0 with SMTP id z13csp3554064ybk; Tue, 19 May 2020 07:29:13 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxJiIK07FO44fqJD6DXf3kupJA8AL4atHhJFROJSvDEFhQaUMzrwCkxQPe8eXA/uam5vQXW X-Received: by 2002:a17:906:9709:: with SMTP id k9mr6885040ejx.48.1589898553483; Tue, 19 May 2020 07:29:13 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1589898553; cv=none; d=google.com; s=arc-20160816; b=YrRciQkL9OMG79KZr6zLayV8N9bQCrHP0PliKmFr44HHh3KwzOPRuvlVI6EBnK6NRS k2+gowqO1HHTDY0iA5buac6Ktbfx/mgsjAeWtCDQ3r3c4A02MEZRugkEbtDKHSEz5JEy hIdY3MvOxvJmhSpKPKH8+fcoaReYaEqg8+tpLQWu4r3a8vdydA1psLsGAwPl2phBtRjq WCrNRJCLVg5LApmLceaQH8y4iXjiyALRp0tEGTq+j57V05yIAimhotOfArY6zS2WsPRs oO3QUXnKLudrei2WDhiD+bcDpZ0esS48Ud1dHze4TEqoo1F3GRY66sYYjR297D61PZ87 VR8g== 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=nc/6gfDsTUWAzNLtngNBt0WMluL9ZYaWOLZ0jWOq+3eTU8GFofhzEWjoTwa/acb1bN rXopQS9UnacyE1n5VVpiGCim3fW1AXgf4muKI6FZ1xb9ob1ihkv0EGhrjMG7I5lovsxL SIWrUY6xz2ZzrEvU5MUipoSGOMhWCvgCsmkfyovTqr4kWRkcuQHNaEC0dPr/ypuPM7r7 Blru9fJFnR+ttvtrIk5L3Rqi0NR5va0hM285Ed6bTk/wBi9GwDZE43ZxX/5m5pHvDZDN 9FawOWxJ5aea/ce64pWNuHFHicOxliWebH+/MMVW8hh2uvMBb2XdIrH9QQ6hynycSfQ5 5frQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@ti.com header.s=ti-com-17Q1 header.b=axRtrI0E; 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 p59si7402045edd.241.2020.05.19.07.28.49; Tue, 19 May 2020 07:29:13 -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=axRtrI0E; 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 S1729090AbgESO1X (ORCPT + 99 others); Tue, 19 May 2020 10:27:23 -0400 Received: from lelv0143.ext.ti.com ([198.47.23.248]:36778 "EHLO lelv0143.ext.ti.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727904AbgESO1V (ORCPT ); Tue, 19 May 2020 10:27:21 -0400 Received: from fllv0035.itg.ti.com ([10.64.41.0]) by lelv0143.ext.ti.com (8.15.2/8.15.2) with ESMTP id 04JER87w062605; Tue, 19 May 2020 09:27:08 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ti.com; s=ti-com-17Q1; t=1589898428; bh=vMR1J84c/X9DcMtd3o/Coldhh8IsXqCNWSRHtDe2Jrc=; h=From:To:CC:Subject:Date:In-Reply-To:References; b=axRtrI0Es3jffANTnWxCagE7R4F7VmK1VHf4mMdy5YRMfiIfh61rHOGPei+iVZ9Ms Of6wdCPNHaVWteMk5T/aqGxkj4au0k4x+2bspqwlgwS35gEUJUDTWkrqbh0UqiEbTM ogaBslqLsSF2q58D25vPfj7X/hAtbQLtiKhPoKgU= Received: from DLEE107.ent.ti.com (dlee107.ent.ti.com [157.170.170.37]) by fllv0035.itg.ti.com (8.15.2/8.15.2) with ESMTP id 04JER8oU039008; Tue, 19 May 2020 09:27:08 -0500 Received: from DLEE114.ent.ti.com (157.170.170.25) by DLEE107.ent.ti.com (157.170.170.37) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1979.3; Tue, 19 May 2020 09:27:07 -0500 Received: from lelv0327.itg.ti.com (10.180.67.183) 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 via Frontend Transport; Tue, 19 May 2020 09:27:08 -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 04JEQgjM008313; Tue, 19 May 2020 09:27:03 -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 v5 04/19] spi: spi-mem: allow specifying a command's extension Date: Tue, 19 May 2020 19:56:26 +0530 Message-ID: <20200519142642.24131-5-p.yadav@ti.com> X-Mailer: git-send-email 2.25.0 In-Reply-To: <20200519142642.24131-1-p.yadav@ti.com> References: <20200519142642.24131-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