From patchwork Wed Dec 12 10:25:14 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jungseung Lee X-Patchwork-Id: 1011820 X-Patchwork-Delegate: tudor.ambarus@gmail.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=lists.infradead.org (client-ip=2607:7c80:54:e::133; helo=bombadil.infradead.org; envelope-from=linux-mtd-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org; receiver=) Authentication-Results: ozlabs.org; dmarc=fail (p=none dis=none) header.from=samsung.com Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="S2tXkOsG"; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=infradead.org header.i=@infradead.org header.b="gveeb1iJ"; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=samsung.com header.i=@samsung.com header.b="FyOjwC8c"; dkim-atps=neutral Received: from bombadil.infradead.org (bombadil.infradead.org [IPv6:2607:7c80:54:e::133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 43FCdC3vvwz9s5c for ; Wed, 12 Dec 2018 21:25:51 +1100 (AEDT) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20170209; h=Sender: Content-Transfer-Encoding:Content-Type:MIME-Version:List-Subscribe:List-Help: List-Post:List-Archive:List-Unsubscribe:List-Id:References:Message-id:Date: Subject:To:From:Reply-To:Cc:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:In-Reply-To: List-Owner; bh=2lXuMZkE1nyKpBGYBTgA8E1z5bdyJJomYltJ93UfpzU=; b=S2tXkOsG4T/G9/ +gTacUxwYniWg+q+UXc9dd1YIYndmk922IOJA/sYYmWaTss+6SgY9WFdhtZxdXx0glPD00YQdyS/r TOBzPXBLLSRSK693mmMBy9TzNGcbTqQqGm0Lrwi34uSsUg1d2AYMg3nmAGIbs9qluNk9DeAzMgS4g Co3Dmecw4II9wDkuB5t/wcADMm6k3ZlHHLjvkh3Q3CSFTaq0Aipdr6xdR0TsgTMKpTsB2ewiqfCOX GEV/Q3u3bdwGh/PtRA4MW62OwvQB7Mixw97dVO97LfzIeUx9EiYrBtYzF5jSGnA3EIiGLOaxrb2SA pFiwLrmnEjab5BiM5FHw==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.90_1 #2 (Red Hat Linux)) id 1gX1i6-0004JE-Os; Wed, 12 Dec 2018 10:25:46 +0000 Received: from merlin.infradead.org ([2001:8b0:10b:1231::1]) by bombadil.infradead.org with esmtps (Exim 4.90_1 #2 (Red Hat Linux)) id 1gX1i5-0004IY-5U for linux-mtd@bombadil.infradead.org; Wed, 12 Dec 2018 10:25:45 +0000 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=merlin.20170209; h=References:Message-id:Date:Subject:To: From:Sender:Reply-To:Cc:MIME-Version:Content-Type:Content-Transfer-Encoding: Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender: Resent-To:Resent-Cc:Resent-Message-ID:In-Reply-To:List-Id:List-Help: List-Unsubscribe:List-Subscribe:List-Post:List-Owner:List-Archive; bh=S26UgpU3KghdZIvcF1bfoHBs5DBLDXqy37cejh5SOds=; b=gveeb1iJCsN7x662xhbcgPUMms QLO1SfvEnSJ5yygvoAhBZdDPoEgdKu7cZmXrHc0/xJ15KphIRQ2SOPme0JxivEiRzrfY1srntEU3v No8zJ5Xv2E95zT113R5yl/qo+NExoNP3i81hb7xPLGp1rvkmZ//xXfsI0gb4BIqL3Mc+1u0PFETED JeLGJuyk0FUz4WQHi3yBwtx74iGxTIKvNPDGMp1QTRI1fr5MIum1daxhgI0dxSOKnm91Hm4y6aJF9 CC/xG94ZDXeR584HEJNtKA6bMzhnSF0tOF58Y49dfyloLgbrwwDzGjuM9sSS+eHbgWZpxGfJ6qBD/ s0ARqU1A==; Received: from mailout2.w1.samsung.com ([210.118.77.12]) by merlin.infradead.org with esmtps (Exim 4.90_1 #2 (Red Hat Linux)) id 1gX1i1-00076v-MT for linux-mtd@lists.infradead.org; Wed, 12 Dec 2018 10:25:43 +0000 Received: from eucas1p1.samsung.com (unknown [182.198.249.206]) by mailout2.w1.samsung.com (KnoxPortal) with ESMTP id 20181212102524euoutp02fbd9e0878056b60914a6834df6511599~vjugoyVdW0890508905euoutp02_; Wed, 12 Dec 2018 10:25:24 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 mailout2.w1.samsung.com 20181212102524euoutp02fbd9e0878056b60914a6834df6511599~vjugoyVdW0890508905euoutp02_ DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=samsung.com; s=mail20170921; t=1544610325; bh=S26UgpU3KghdZIvcF1bfoHBs5DBLDXqy37cejh5SOds=; h=From:To:Subject:Date:References:From; b=FyOjwC8c61m7oHZyDYsKAfABeLHyUJ4hQNcPS3ipkoQcKxLjCr9StO+o9ELuqAldm T+BDFW3evNAcJq9lif2HvOG5BsnXYlap9jWdFZPuaUEpszao27RVijpSaN7uhb8s/Q 2SyrTZnkhkGbQYpjfF0sia/xhh4wtke5b7e7s/Y4= Received: from eusmges2new.samsung.com (unknown [203.254.199.244]) by eucas1p2.samsung.com (KnoxPortal) with ESMTP id 20181212102524eucas1p2f0018890e07a9fe02bf12ac96781f479~vjugSSW403086730867eucas1p2R; Wed, 12 Dec 2018 10:25:24 +0000 (GMT) Received: from eucas1p2.samsung.com ( [182.198.249.207]) by eusmges2new.samsung.com (EUCPMTA) with SMTP id CE.8A.04294.412E01C5; Wed, 12 Dec 2018 10:25:24 +0000 (GMT) Received: from eusmgms2.samsung.com (unknown [182.198.249.180]) by eucas1p1.samsung.com (KnoxPortal) with ESMTP id 20181212102523eucas1p16be703ce8b995b9a5d490b31d0496ecc~vjufdAG2A2948529485eucas1p1c; Wed, 12 Dec 2018 10:25:23 +0000 (GMT) X-AuditID: cbfec7f4-84fff700000010c6-13-5c10e214e30e Received: from eusync4.samsung.com ( [203.254.199.214]) by eusmgms2.samsung.com (EUCPMTA) with SMTP id 39.81.04128.312E01C5; Wed, 12 Dec 2018 10:25:23 +0000 (GMT) Received: from localhost.localdomain ([10.88.100.192]) by eusync4.samsung.com (Oracle Communications Messaging Server 7.0.5.31.0 64bit (built May 5 2014)) with ESMTPA id <0PJM00MA5CY5TI00@eusync4.samsung.com>; Wed, 12 Dec 2018 10:25:23 +0000 (GMT) From: Jungseung Lee To: Marek Vasut , David Woodhouse , Brian Norris , Boris Brezillon , Richard Weinberger , linux-mtd@lists.infradead.org, js07.lee@gmail.com, js07.lee@samsung.com Subject: [PATCH 1/2 v2] mtd: spi-nor: add 4bit block protection support Date: Wed, 12 Dec 2018 19:25:14 +0900 Message-id: <20181212102515.7296-1-js07.lee@samsung.com> X-Mailer: git-send-email 2.17.1 X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFprOIsWRmVeSWpSXmKPExsWy7djP87oijwRiDGb+FbbYd6qfxeLIhbXM FhNXTma2+DvnHZPFo5u/WS12Ny1jtzi65x6zxeSdbxgdODzmran22DnrLrvH5hVaHpuX1Hvc nFfo0bdlFWMAWxSXTUpqTmZZapG+XQJXxvaTU9kKbhtWzPt3lbmB8ZZaFyMnh4SAicS/OXOY uhi5OIQEVjBK3Lh8H8r5zChx+swNdpiqxiln2SASyxgl3v/aC+X8Y5RYdbITrIpNQEvixu9N rCC2iMB8JonLr+1BbGEBd4kn95YwgdgsAqoS11qmMXcxcnDwClhI3JjlCLFAXmL1hgPMIDMl BJ6ySvz7OZENIuEiMenzMihbWOLV8S1QF8lIXJ7czQJhF0vsXDmRHaK5hVHi0fIlUEXGEu/e rmUGsZkF+CQmbZsOtlhCgFeio00IosRDYtKLf2DzhQRiJdZfP8s8gVF8ASPDKkbx1NLi3PTU YqO81HK94sTc4tK8dL3k/NxNjMDoOv3v+JcdjLv+JB1iFOBgVOLh3fGKP0aINbGsuDL3EKME B7OSCK+MkUCMEG9KYmVValF+fFFpTmrxIUZpDhYlcd5qhgfRQgLpiSWp2ampBalFMFkmDk6p Bsakc65PHHbYip9nmbgsq4lfeaHGxwMscxfKpBl5WTElfLnx8nHdu5daLJ8Vd+kx7/84fa7B /8YOrZ/LbrunTH08u1GljK/+Tk8A66byd6pX9u6srvTjdDv5UNS0ZYGtZdPUHh/m75M/2WjG h3BXO/zbO++lRnzCvMbDCeu/dvQE3Q87s3CBcbMSS3FGoqEWc1FxIgD3JxuSqgIAAA== X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFnrBJMWRmVeSWpSXmKPExsVy+t/xa7rCjwRiDDbtV7fYd6qfxeLIhbXM FhNXTma2+DvnHZPFo5u/WS12Ny1jtzi65x6zxeSdbxgdODzmran22DnrLrvH5hVaHpuX1Hvc nFfo0bdlFWMAWxSXTUpqTmZZapG+XQJXxvaTU9kKbhtWzPt3lbmB8ZZaFyMnh4SAiUTjlLNs ILaQwBJGicY5OhB2A5PEo0WJIDabgJbEjd+bWLsYuThEBOYzSRxfvZ8ZJCEs4C7x5N4SJhCb RUBV4lrLNKA4BwevgIXEjVmOEPPlJVZvOMA8gZFzASPDKkaR1NLi3PTcYiO94sTc4tK8dL3k /NxNjED/bzv2c8sOxq53wYcYBTgYlXh4d7zijxFiTSwrrsw9xCjBwawkwitjJBAjxJuSWFmV WpQfX1Sak1p8iFGag0VJnPe8QWWUkEB6YklqdmpqQWoRTJaJg1OqgVGc6a6m0YwAYfPlZ4O4 A6oKLMXuFh+Lnyb+W/ZQpcaxz/uUdn/YvGFOrbzo+k8H9EU3/n/7JOSMEXPvq75ZR27nGfQc uyOpbT1VntvO6qjBgyfqNr1ssv8tz96Jfa9afKvQ+Yb/guMGEhn3RHceKozpXiSlW6jQ/dlh BpdEkAVvy6lgWcN/t5RYijMSDbWYi4oTAdtdRtD7AQAA X-CMS-MailID: 20181212102523eucas1p16be703ce8b995b9a5d490b31d0496ecc X-Msg-Generator: CA CMS-TYPE: 201P X-CMS-RootMailID: 20181212102523eucas1p16be703ce8b995b9a5d490b31d0496ecc References: X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20181212_052542_049152_C3FC800C X-CRM114-Status: GOOD ( 27.75 ) X-Spam-Score: -5.4 (-----) X-Spam-Report: SpamAssassin version 3.4.2 on merlin.infradead.org summary: Content analysis details: (-5.4 points) pts rule name description ---- ---------------------- -------------------------------------------------- -5.0 RCVD_IN_DNSWL_HI RBL: Sender listed at http://www.dnswl.org/, high trust [210.118.77.12 listed in list.dnswl.org] -0.0 SPF_HELO_PASS SPF: HELO matches SPF record -0.0 SPF_PASS SPF: sender matches SPF record -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature 0.1 DKIM_SIGNED Message has a DKIM or DK signature, not necessarily valid -0.1 DKIM_VALID_EF Message has a valid DKIM or DK signature from envelope-from domain -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from author's domain -0.2 DKIMWL_WL_HIGH DKIMwl.org - Whitelisted High sender X-BeenThere: linux-mtd@lists.infradead.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: Linux MTD discussion mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Sender: "linux-mtd" Errors-To: linux-mtd-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org Currently, we are supporting block protection only for flash chips with 3 block protection bits in the SR register. This patch enables block protection support for some flash with 4 block protection bits (bp0-3). Because this feature is not universal to all flash that support lock/unlock, control it via a new flag. Signed-off-by: Jungseung Lee --- ChangeLog v1->v2: - Rebase on latest MTD development branch --- drivers/mtd/spi-nor/spi-nor.c | 61 ++++++++++++++++++++++++++++++----- include/linux/mtd/spi-nor.h | 4 +++ 2 files changed, 57 insertions(+), 8 deletions(-) diff --git a/drivers/mtd/spi-nor/spi-nor.c b/drivers/mtd/spi-nor/spi-nor.c index 6e13bbd1aaa5..c33b72eeae12 100644 --- a/drivers/mtd/spi-nor/spi-nor.c +++ b/drivers/mtd/spi-nor/spi-nor.c @@ -96,6 +96,7 @@ enum spi_nor_pp_command_index { struct spi_nor_flash_parameter { u64 size; u32 page_size; + u16 n_sectors; struct spi_nor_hwcaps hwcaps; struct spi_nor_read_command reads[SNOR_CMD_READ_MAX]; @@ -278,6 +279,7 @@ struct flash_info { #define NO_CHIP_ERASE BIT(12) /* Chip does not support chip erase */ #define SPI_NOR_SKIP_SFDP BIT(13) /* Skip parsing of SFDP tables */ #define USE_CLSR BIT(14) /* use CLSR command */ +#define SPI_NOR_HAS_BP3 BIT(15) /* use 4 bits field for block protect */ /* Part specific fixup hooks. */ const struct spi_nor_fixups *fixups; @@ -1087,18 +1089,36 @@ static void stm_get_locked_range(struct spi_nor *nor, u8 sr, loff_t *ofs, int shift = ffs(mask) - 1; int pow; + if (nor->flags & SNOR_F_HAS_SR_BP3) + mask |= SR_BP3; + if (!(sr & mask)) { /* No protection */ *ofs = 0; *len = 0; + return; + } + + if (nor->flags & SNOR_F_HAS_SR_BP3) { + u8 temp = sr & mask; + + if (temp & SR_BP3) + temp = (temp & ~SR_BP3) | BIT(5); + + pow = ilog2(nor->n_sectors) + 1 - (temp >> shift); + if (pow > 0) + *len = mtd->size >> pow; + else + *len = mtd->size; } else { pow = ((sr & mask) ^ mask) >> shift; *len = mtd->size >> pow; - if (nor->flags & SNOR_F_HAS_SR_TB && sr & SR_TB) - *ofs = 0; - else - *ofs = mtd->size - *len; } + + if (nor->flags & SNOR_F_HAS_SR_TB && sr & SR_TB) + *ofs = 0; + else + *ofs = mtd->size - *len; } /* @@ -1178,6 +1198,9 @@ static int stm_lock(struct spi_nor *nor, loff_t ofs, uint64_t len) bool can_be_top = true, can_be_bottom = nor->flags & SNOR_F_HAS_SR_TB; bool use_top; + if (nor->flags & SNOR_F_HAS_SR_BP3) + mask |= SR_BP3; + status_old = read_sr(nor); if (status_old < 0) return status_old; @@ -1217,7 +1240,16 @@ static int stm_lock(struct spi_nor *nor, loff_t ofs, uint64_t len) * pow = ceil(log2(size / len)) = log2(size) - floor(log2(len)) */ pow = ilog2(mtd->size) - ilog2(lock_len); - val = mask - (pow << shift); + + if (nor->flags & SNOR_F_HAS_SR_BP3) { + val = ilog2(nor->n_sectors) + 1 - pow; + val = val << shift; + if (val & BIT(5)) + val = (val & ~BIT(5)) | SR_BP3; + } else { + val = mask - (pow << shift); + } + if (val & ~mask) return -EINVAL; /* Don't "lock" with no region! */ @@ -1258,6 +1290,9 @@ static int stm_unlock(struct spi_nor *nor, loff_t ofs, uint64_t len) bool can_be_top = true, can_be_bottom = nor->flags & SNOR_F_HAS_SR_TB; bool use_top; + if (nor->flags & SNOR_F_HAS_SR_BP3) + mask |= SR_BP3; + status_old = read_sr(nor); if (status_old < 0) return status_old; @@ -1299,13 +1334,19 @@ static int stm_unlock(struct spi_nor *nor, loff_t ofs, uint64_t len) pow = ilog2(mtd->size) - order_base_2(lock_len); if (lock_len == 0) { val = 0; /* fully unlocked */ + } else if (nor->flags & SNOR_F_HAS_SR_BP3) { + val = ilog2(nor->n_sectors) + 1 - pow; + val = val << shift; + if (val & BIT(5)) + val = (val & ~BIT(5)) | SR_BP3; } else { val = mask - (pow << shift); - /* Some power-of-two sizes are not supported */ - if (val & ~mask) - return -EINVAL; } + /* Some power-of-two sizes are not supported */ + if (val & ~mask) + return -EINVAL; + status_new = (status_old & ~mask & ~SR_TB) | val; /* Don't protect status register if we're fully unlocked */ @@ -3563,6 +3604,7 @@ static int spi_nor_init_params(struct spi_nor *nor, /* Set SPI NOR sizes. */ params->size = (u64)info->sector_size * info->n_sectors; params->page_size = info->page_size; + params->n_sectors = info->n_sectors; /* (Fast) Read settings. */ params->hwcaps.mask |= SNOR_HWCAPS_READ; @@ -4065,12 +4107,15 @@ int spi_nor_scan(struct spi_nor *nor, const char *name, nor->flags |= SNOR_F_NO_OP_CHIP_ERASE; if (info->flags & USE_CLSR) nor->flags |= SNOR_F_USE_CLSR; + if (info->flags & SPI_NOR_HAS_BP3) + nor->flags |= SNOR_F_HAS_SR_BP3; if (info->flags & SPI_NOR_NO_ERASE) mtd->flags |= MTD_NO_ERASE; mtd->dev.parent = dev; nor->page_size = params.page_size; + nor->n_sectors = params.n_sectors; mtd->writebufsize = nor->page_size; if (np) { diff --git a/include/linux/mtd/spi-nor.h b/include/linux/mtd/spi-nor.h index fa2d89e38e40..b00ae7c6ecab 100644 --- a/include/linux/mtd/spi-nor.h +++ b/include/linux/mtd/spi-nor.h @@ -119,6 +119,7 @@ #define SR_BP1 BIT(3) /* Block protect 1 */ #define SR_BP2 BIT(4) /* Block protect 2 */ #define SR_TB BIT(5) /* Top/Bottom protect */ +#define SR_BP3 BIT(6) /* Block protect 3 */ #define SR_SRWD BIT(7) /* SR write protect */ /* Spansion/Cypress specific status bits */ #define SR_E_ERR BIT(5) @@ -235,6 +236,7 @@ enum spi_nor_option_flags { SNOR_F_BROKEN_RESET = BIT(6), SNOR_F_4B_OPCODES = BIT(7), SNOR_F_HAS_4BAIT = BIT(8), + SNOR_F_HAS_SR_BP3 = BIT(9), }; /** @@ -338,6 +340,7 @@ struct flash_info; * @dev: point to a spi device, or a spi nor controller device. * @info: spi-nor part JDEC MFR id and other info * @page_size: the page size of the SPI NOR + * @n_sectors: number of sector * @addr_width: number of address bytes * @erase_opcode: the opcode for erasing a sector * @read_opcode: the read opcode @@ -374,6 +377,7 @@ struct spi_nor { struct device *dev; const struct flash_info *info; u32 page_size; + u16 n_sectors; u8 addr_width; u8 erase_opcode; u8 read_opcode; From patchwork Wed Dec 12 10:25:15 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jungseung Lee X-Patchwork-Id: 1011821 X-Patchwork-Delegate: tudor.ambarus@gmail.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=lists.infradead.org (client-ip=2607:7c80:54:e::133; helo=bombadil.infradead.org; envelope-from=linux-mtd-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org; receiver=) Authentication-Results: ozlabs.org; dmarc=fail (p=none dis=none) header.from=samsung.com Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="lpv1X+Kr"; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=samsung.com header.i=@samsung.com header.b="YCk3RC+q"; dkim-atps=neutral Received: from bombadil.infradead.org (bombadil.infradead.org [IPv6:2607:7c80:54:e::133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 43FCdV58PZz9s4s for ; Wed, 12 Dec 2018 21:26:06 +1100 (AEDT) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20170209; h=Sender: Content-Transfer-Encoding:Content-Type:MIME-Version:List-Subscribe:List-Help: List-Post:List-Archive:List-Unsubscribe:List-Id:References:In-reply-to: Message-id:Date:Subject:To:From:Reply-To:Cc:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=9ndQnpngPT5iqPBi6cyibuP2e9s8e+8FTbbzNgxxw20=; b=lpv1X+KrU/SG9i jBWLsmyqUvUm6p67GKoKyzzIb7mXt8UWK8r9+r0brKWRsZBPPl2+jRKRTS4CEYV6G+xcSzDQPlWGu XVYpDMp0fD+BE05mg+fvmvuPf9/iBOpxT0RQ2fvkoav7CaQZ786kcV7Dmu8i/gvARm3hIuhdNYvuW 4rYspg5miQxZttuF/29oly4MaNpkd8/w9fLU4Q3imQtsvqYt8+1XiVHHnLd0vqvJnf4ZxQhAAbcmZ DS0HP8efc6wd7vrRQYQYQ3ppYdSjVBTkIPtDJUN6OyXOoZEAMD2/H5fAl5pH712bNEDeTAj0tOMcp PCEModQAJKPj2Zc58H1A==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.90_1 #2 (Red Hat Linux)) id 1gX1iM-0004UU-SW; Wed, 12 Dec 2018 10:26:02 +0000 Received: from mailout1.w1.samsung.com ([210.118.77.11]) by bombadil.infradead.org with esmtps (Exim 4.90_1 #2 (Red Hat Linux)) id 1gX1i3-0004Fx-3u for linux-mtd@lists.infradead.org; Wed, 12 Dec 2018 10:25:45 +0000 Received: from eucas1p2.samsung.com (unknown [182.198.249.207]) by mailout1.w1.samsung.com (KnoxPortal) with ESMTP id 20181212102528euoutp0130c0670b4fea0861abc12b2ade46d33a~vjukKjF032439224392euoutp01f; Wed, 12 Dec 2018 10:25:28 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 mailout1.w1.samsung.com 20181212102528euoutp0130c0670b4fea0861abc12b2ade46d33a~vjukKjF032439224392euoutp01f DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=samsung.com; s=mail20170921; t=1544610328; bh=MOoJXRTHdsf5EZCDw8rnYenYzbKkKfeSGwFXMTpyfIs=; h=From:To:Subject:Date:In-reply-to:References:From; b=YCk3RC+qYD4vWfRz5GiJE6H/D+/NAe5p3w2/8JLG9nsylhGgfe6U1NkPI3gZGdybF BIDL4JXlxupOguCbtXMt2H9RHSFuOrs2RkAhFfeAdlIVKiHa/6mXSoW3M4bV2IFExC idikv4DUNpaA2FNI7Vt8MZmiQmjyTNKtkTTlk6gU= Received: from eusmges2new.samsung.com (unknown [203.254.199.244]) by eucas1p2.samsung.com (KnoxPortal) with ESMTP id 20181212102528eucas1p2edc0704c3aa95632d01adee7ebc0e567~vjujo7_Jc3086730867eucas1p2V; Wed, 12 Dec 2018 10:25:28 +0000 (GMT) Received: from eucas1p2.samsung.com ( [182.198.249.207]) by eusmges2new.samsung.com (EUCPMTA) with SMTP id 52.9A.04294.712E01C5; Wed, 12 Dec 2018 10:25:27 +0000 (GMT) Received: from eusmgms2.samsung.com (unknown [182.198.249.180]) by eucas1p1.samsung.com (KnoxPortal) with ESMTP id 20181212102527eucas1p16f75c4c7a3e90a4a2ebec03a3dc0a4f3~vjui6Jk6f1309813098eucas1p1l; Wed, 12 Dec 2018 10:25:27 +0000 (GMT) X-AuditID: cbfec7f4-835ff700000010c6-22-5c10e2178837 Received: from eusync4.samsung.com ( [203.254.199.214]) by eusmgms2.samsung.com (EUCPMTA) with SMTP id 63.91.04128.712E01C5; Wed, 12 Dec 2018 10:25:27 +0000 (GMT) Received: from localhost.localdomain ([10.88.100.192]) by eusync4.samsung.com (Oracle Communications Messaging Server 7.0.5.31.0 64bit (built May 5 2014)) with ESMTPA id <0PJM00MA5CY5TI00@eusync4.samsung.com>; Wed, 12 Dec 2018 10:25:27 +0000 (GMT) From: Jungseung Lee To: Marek Vasut , David Woodhouse , Brian Norris , Boris Brezillon , Richard Weinberger , linux-mtd@lists.infradead.org, js07.lee@gmail.com, js07.lee@samsung.com Subject: [PATCH 2/2 v2] mtd: spi-nor: support lock/unlock for a few Micron chips Date: Wed, 12 Dec 2018 19:25:15 +0900 Message-id: <20181212102515.7296-2-js07.lee@samsung.com> X-Mailer: git-send-email 2.17.1 In-reply-to: <20181212102515.7296-1-js07.lee@samsung.com> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFlrMIsWRmVeSWpSXmKPExsWy7djP87rijwRiDFrbTCz2nepnsThyYS2z xcSVk5kt/s55x2Tx6OZvVovdTcvYLY7uucdsMXnnG0YHDo95a6o9ds66y+6xeYWWx+Yl9R43 5xV69G1ZxRjAFsVlk5Kak1mWWqRvl8CVcWT/BfaCT3wV/57FNzBO4uli5OSQEDCROHVvFmsX IxeHkMAKRomjfY1MEM5nRokD6z6zwFTd2dwJVbWMUWL74WWMEM4/RomZ21Yyg1SxCWhJ3Pi9 iRXEFhGYzyRx+bU9iC0sECTx4tFbsDiLgKrE3Und7CA2r4CFxPt365kgNshLrN5wAGwOp4Cl RNurDrAFEgJ/WSVWtWyEOsNFYs7Hu+wQtrDEq+NboGwZicuTu6FqiiV2rpzIDtHcwijxaPkS qCJjiXdv14JtYBbgk5i0bTqQzQEU55XoaBOCMD0kVj9Sh3ish1Hi4rMTzBMYJRYwMqxiFE8t Lc5NTy02ykst1ytOzC0uzUvXS87P3cQIjLrT/45/2cG460/SIUYBDkYlHt4dr/hjhFgTy4or cw8xSnAwK4nwyhgJxAjxpiRWVqUW5ccXleakFh9ilOZgURLnrWZ4EC0kkJ5YkpqdmlqQWgST ZeLglGpgdNBQttXTv8xx7m7thK1PLA9mMYYHZfxrbPIXbJZwaztg2a8xhSMgdpIUE4P1s5yX jsWns4ymVoT4MHk7f98YqV3gPWf9/isZx9LD4359aimfMm+ayBfeLim/7Wvr//4J/qm49o9x R2voqfZq5dBLzn+zF8yT/sM4/9qFlcGhYt9/7gzbdfCyEktxRqKhFnNRcSIAddGLLLYCAAA= X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFmpiluLIzCtJLcpLzFFi42I5/e/4NV3xRwIxBmseSVjsO9XPYnHkwlpm i4krJzNb/J3zjsni0c3frBa7m5axWxzdc4/ZYvLON4wOHB7z1lR77Jx1l91j8wotj81L6j1u ziv06NuyijGALYrLJiU1J7MstUjfLoEr48j+C+wFn/gq/j2Lb2CcxNPFyMkhIWAicWdzJ2sX IxeHkMASRonWMxugnAYmiSdb+tlBqtgEtCRu/N4ElhARmM8kcXz1fmaQhLBAgMSdPQvAbBYB VYm7k7rBGngFLCTev1vPBLFCXmL1hgNgNZwClhJtrzoYQWwhoJr9D28yTWDkXsDIsIpRJLW0 ODc9t9hIrzgxt7g0L10vOT93EyMwZLYd+7llB2PXu+BDjAIcjEo8vDte8ccIsSaWFVfmHmKU 4GBWEuGVMRKIEeJNSaysSi3Kjy8qzUktPsQozcGiJM573qAySkggPbEkNTs1tSC1CCbLxMEp 1cBYwy2pdUT3lr1PyKbN5ScmHYmZ8GlBcZyZjdGJ7nU24rozfc6qy8/P3tS8YuOWuZ/ecMiw /zBY4dynNHW3zHqWHTUncjICIliPxTBMuvSBS3TVeQZHw8rVi/hPVJYvNnjKv2l7ctWcV1Ob 7/2zWtdVome1kqOv8dNftltfuYX+f3VrOx79d98RJZbijERDLeai4kQApLc/QxUCAAA= X-CMS-MailID: 20181212102527eucas1p16f75c4c7a3e90a4a2ebec03a3dc0a4f3 X-Msg-Generator: CA CMS-TYPE: 201P X-CMS-RootMailID: 20181212102527eucas1p16f75c4c7a3e90a4a2ebec03a3dc0a4f3 References: <20181212102515.7296-1-js07.lee@samsung.com> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20181212_022543_469122_4DE474F8 X-CRM114-Status: GOOD ( 14.06 ) X-Spam-Score: -5.4 (-----) X-Spam-Report: SpamAssassin version 3.4.2 on bombadil.infradead.org summary: Content analysis details: (-5.4 points) pts rule name description ---- ---------------------- -------------------------------------------------- -5.0 RCVD_IN_DNSWL_HI RBL: Sender listed at http://www.dnswl.org/, high trust [210.118.77.11 listed in list.dnswl.org] -0.0 SPF_PASS SPF: sender matches SPF record -0.0 SPF_HELO_PASS SPF: HELO matches SPF record 0.1 DKIM_SIGNED Message has a DKIM or DK signature, not necessarily valid -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from author's domain -0.1 DKIM_VALID_EF Message has a valid DKIM or DK signature from envelope-from domain -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature -0.2 DKIMWL_WL_HIGH DKIMwl.org - Whitelisted High sender X-BeenThere: linux-mtd@lists.infradead.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: Linux MTD discussion mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Sender: "linux-mtd" Errors-To: linux-mtd-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org Some Micron models are known to have lock/unlock support, and that also support 4bit block protection bit (bp0-3). This patch support lock/unlock feature on the flash. Tested on w25q512ax3. The Other is modified following the datasheet. Signed-off-by: Jungseung Lee --- ChangeLog v1->v2: - Rebase on latest MTD development branch --- drivers/mtd/spi-nor/spi-nor.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/drivers/mtd/spi-nor/spi-nor.c b/drivers/mtd/spi-nor/spi-nor.c index c33b72eeae12..b94e0909efcf 100644 --- a/drivers/mtd/spi-nor/spi-nor.c +++ b/drivers/mtd/spi-nor/spi-nor.c @@ -1904,8 +1904,16 @@ static const struct flash_info spi_nor_ids[] = { { "n25q128a13", INFO(0x20ba18, 0, 64 * 1024, 256, SECT_4K | SPI_NOR_QUAD_READ) }, { "n25q256a", INFO(0x20ba19, 0, 64 * 1024, 512, SECT_4K | SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ) }, { "n25q256ax1", INFO(0x20bb19, 0, 64 * 1024, 512, SECT_4K | SPI_NOR_QUAD_READ) }, - { "n25q512a", INFO(0x20bb20, 0, 64 * 1024, 1024, SECT_4K | USE_FSR | SPI_NOR_QUAD_READ) }, - { "n25q512ax3", INFO(0x20ba20, 0, 64 * 1024, 1024, SECT_4K | USE_FSR | SPI_NOR_QUAD_READ) }, + { + "n25q512a", INFO(0x20bb20, 0, 64 * 1024, 1024, + SECT_4K | USE_FSR | SPI_NOR_QUAD_READ | + SPI_NOR_HAS_LOCK | SPI_NOR_HAS_TB | SPI_NOR_HAS_BP3) + }, + { + "n25q512ax3", INFO(0x20ba20, 0, 64 * 1024, 1024, + SECT_4K | USE_FSR | SPI_NOR_QUAD_READ | + SPI_NOR_HAS_LOCK | SPI_NOR_HAS_TB | SPI_NOR_HAS_BP3) + }, { "n25q00", INFO(0x20ba21, 0, 64 * 1024, 2048, SECT_4K | USE_FSR | SPI_NOR_QUAD_READ | NO_CHIP_ERASE) }, { "n25q00a", INFO(0x20bb21, 0, 64 * 1024, 2048, SECT_4K | USE_FSR | SPI_NOR_QUAD_READ | NO_CHIP_ERASE) }, { "mt25qu02g", INFO(0x20bb22, 0, 64 * 1024, 4096, SECT_4K | USE_FSR | SPI_NOR_QUAD_READ | NO_CHIP_ERASE) },