Received: by 2002:a25:1104:0:0:0:0:0 with SMTP id 4csp645942ybr; Fri, 22 May 2020 15:45:53 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxIMt2TYPAuAkYLEWeCJyl4PCa2QMb0XXxHv3Ea3W5nshR8xYo6xc2eGORxivkWn7AcZN1f X-Received: by 2002:a50:c091:: with SMTP id k17mr4789416edf.106.1590187553289; Fri, 22 May 2020 15:45:53 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1590187553; cv=none; d=google.com; s=arc-20160816; b=QpRi0796JSc15Qg+euh9dyZFMN9ZSt5oUKhkqBMaV2bgZHKBJ6TWyI5+y+nf2WTiYP TDXFgF4YO6NYxqNKdIJfi9FZTfS8JZbG8uhSm1y8h/0d3+DF4Oh6k38qmA6rihcBvTfr Zvdp8selfRao3eXazrp8yuYL8VpWkHtSGu/TjOIS8ieB+u2WFhxOmKJSqEk3Yf5T8ZEv /d5r/iNn/BGH9REwG8GTt8SbDvPvbT9Ga2kfFF8T4AWanxg+eTZ+Wkv/JpjFJTGLq+0U KKlEY09RVMaGh57wuS8+zklQhCJ4ropbofYv/sSGEuyNROC6A5A65lzmKJuK6uM+eDS1 wSLA== 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=8U5j3EpmZjALS0efVhhezXkuXnpSFM9S8zpuLAfKQGc=; b=Yd+Qt+vOWwlzzAsBqiCns16uDd3S9O3GEZcSNttl7OhMFoR6F3HxTLeh8SZbEDmUsA VJee2NVhW+lGC63k3Eu/L+yUcJl10/pNiz05PxDcV9h0iQZi4TDXRX00lb1Nt18ctzJM gLzZpHESNyBY7qXSPucURB0pZiZ+ilngnKAD1JKNbqVrz0p73P5i+RR7d2zltotnZURI RpnqgolzGV+foFW72R/HCepf8oMVjgn+IhBPpbI1dCKkyDqH+anayGxn7BmCxgTXVa3E CRzI6yO/ljEY8cjy2STe6gIP6ZqH2SkVS4BNXmtqQLsyY8FWJM5XfkiMi9z3fKkfC1cd yfUQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@ti.com header.s=ti-com-17Q1 header.b=h7SH3ppl; 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 k8si5178008ejs.101.2020.05.22.15.45.29; Fri, 22 May 2020 15:45:53 -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=h7SH3ppl; 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 S1731329AbgEVWlp (ORCPT + 99 others); Fri, 22 May 2020 18:41:45 -0400 Received: from lelv0143.ext.ti.com ([198.47.23.248]:54312 "EHLO lelv0143.ext.ti.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1731318AbgEVWln (ORCPT ); Fri, 22 May 2020 18:41:43 -0400 Received: from lelv0266.itg.ti.com ([10.180.67.225]) by lelv0143.ext.ti.com (8.15.2/8.15.2) with ESMTP id 04MMfVGn061203; Fri, 22 May 2020 17:41:31 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ti.com; s=ti-com-17Q1; t=1590187291; bh=8U5j3EpmZjALS0efVhhezXkuXnpSFM9S8zpuLAfKQGc=; h=From:To:CC:Subject:Date:In-Reply-To:References; b=h7SH3ppl4Q6rErdzJ6Ib7o1B1zDJNAhKYSTz4+PjNVBYMivX/A8jZLKOOjQPSigAw gS8bpaZHPDTH/zCjyC2W68vF0eun+T4q1uFyXgzPzolEpS431NK4wHchRD9krSKJt/ /ZtGl7eCxZfvk5w3fDAMqAZDKoWEWXnGziz6X+yw= Received: from DLEE109.ent.ti.com (dlee109.ent.ti.com [157.170.170.41]) by lelv0266.itg.ti.com (8.15.2/8.15.2) with ESMTPS id 04MMfVtZ106761 (version=TLSv1.2 cipher=AES256-GCM-SHA384 bits=256 verify=FAIL); Fri, 22 May 2020 17:41:31 -0500 Received: from DLEE101.ent.ti.com (157.170.170.31) by DLEE109.ent.ti.com (157.170.170.41) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1979.3; Fri, 22 May 2020 17:41:30 -0500 Received: from lelv0326.itg.ti.com (10.180.67.84) by DLEE101.ent.ti.com (157.170.170.31) 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, 22 May 2020 17:41:30 -0500 Received: from pratyush-OptiPlex-790.dhcp.ti.com (ileax41-snat.itg.ti.com [10.172.224.153]) by lelv0326.itg.ti.com (8.15.2/8.15.2) with ESMTP id 04MMeh5f044559; Fri, 22 May 2020 17:41:26 -0500 From: Pratyush Yadav To: Tudor Ambarus , Miquel Raynal , Richard Weinberger , Vignesh Raghavendra , Mark Brown , Nicolas Ferre , Alexandre Belloni , Ludovic Desroches , Matthias Brugger , Michal Simek , , , , , CC: Pratyush Yadav , Sekhar Nori , Boris Brezillon , Mason Yang Subject: [PATCH v8 08/19] mtd: spi-nor: sfdp: get command opcode extension type from BFPT Date: Sat, 23 May 2020 04:10:31 +0530 Message-ID: <20200522224042.29970-9-p.yadav@ti.com> X-Mailer: git-send-email 2.25.0 In-Reply-To: <20200522224042.29970-1-p.yadav@ti.com> References: <20200522224042.29970-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 Some devices in DTR mode expect an extra command byte called the extension. The extension can either be same as the opcode, bitwise inverse of the opcode, or another additional byte forming a 16-byte opcode. Get the extension type from the BFPT. For now, only flashes with "repeat" and "inverse" extensions are supported. Signed-off-by: Pratyush Yadav --- drivers/mtd/spi-nor/sfdp.c | 17 +++++++++++++++++ drivers/mtd/spi-nor/sfdp.h | 6 ++++++ 2 files changed, 23 insertions(+) diff --git a/drivers/mtd/spi-nor/sfdp.c b/drivers/mtd/spi-nor/sfdp.c index 96960f2f3d7a..ab086aa4746f 100644 --- a/drivers/mtd/spi-nor/sfdp.c +++ b/drivers/mtd/spi-nor/sfdp.c @@ -609,6 +609,23 @@ static int spi_nor_parse_bfpt(struct spi_nor *nor, if (bfpt_header->length == BFPT_DWORD_MAX_JESD216B) return spi_nor_post_bfpt_fixups(nor, bfpt_header, &bfpt, params); + /* 8D-8D-8D command extension. */ + switch (bfpt.dwords[BFPT_DWORD(18)] & BFPT_DWORD18_CMD_EXT_MASK) { + case BFPT_DWORD18_CMD_EXT_REP: + nor->cmd_ext_type = SPI_NOR_EXT_REPEAT; + break; + + case BFPT_DWORD18_CMD_EXT_INV: + nor->cmd_ext_type = SPI_NOR_EXT_INVERT; + break; + + case BFPT_DWORD18_CMD_EXT_RES: + return -EINVAL; + + case BFPT_DWORD18_CMD_EXT_16B: + dev_err(nor->dev, "16-bit opcodes not supported\n"); + return -ENOTSUPP; + } return spi_nor_post_bfpt_fixups(nor, bfpt_header, &bfpt, params); } diff --git a/drivers/mtd/spi-nor/sfdp.h b/drivers/mtd/spi-nor/sfdp.h index f8198af43a63..e15e30796d62 100644 --- a/drivers/mtd/spi-nor/sfdp.h +++ b/drivers/mtd/spi-nor/sfdp.h @@ -84,6 +84,12 @@ struct sfdp_bfpt { #define BFPT_DWORD15_QER_SR2_BIT1_NO_RD (0x4UL << 20) #define BFPT_DWORD15_QER_SR2_BIT1 (0x5UL << 20) /* Spansion */ +#define BFPT_DWORD18_CMD_EXT_MASK GENMASK(30, 29) +#define BFPT_DWORD18_CMD_EXT_REP (0x0UL << 29) /* Repeat */ +#define BFPT_DWORD18_CMD_EXT_INV (0x1UL << 29) /* Invert */ +#define BFPT_DWORD18_CMD_EXT_RES (0x2UL << 29) /* Reserved */ +#define BFPT_DWORD18_CMD_EXT_16B (0x3UL << 29) /* 16-bit opcode */ + struct sfdp_parameter_header { u8 id_lsb; u8 minor; -- 2.26.2