From patchwork Fri Dec 5 02:36:08 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Brian Norris X-Patchwork-Id: 417981 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from bombadil.infradead.org (bombadil.infradead.org [IPv6:2001:1868:205::9]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 08FB11400D2 for ; Fri, 5 Dec 2014 13:38:04 +1100 (AEDT) Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.80.1 #2 (Red Hat Linux)) id 1XwilQ-0005kZ-PM; Fri, 05 Dec 2014 02:37:00 +0000 Received: from mail-pa0-x236.google.com ([2607:f8b0:400e:c03::236]) by bombadil.infradead.org with esmtps (Exim 4.80.1 #2 (Red Hat Linux)) id 1XwilD-0005Rt-LP for linux-mtd@lists.infradead.org; Fri, 05 Dec 2014 02:36:48 +0000 Received: by mail-pa0-f54.google.com with SMTP id fb1so19320695pad.13 for ; Thu, 04 Dec 2014 18:36:26 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=x+0w7ziIyVJRZhcywt4Nfb7u24ZDFMBUfz4p1kvZ/Rs=; b=btOaiqtZaYpRiqryBwgrb7e0c3qrHa4I98m3Kxu8CEwsWEiTX2evKEMCZ/B9h9/sU5 fVEpu5OXj9THl42YpJJ9HDNEoZjZnDSYrbtiiZrLXSKdvSyk2R+gJwWZdZpk1ZGLe3/x SEkKIDty7wXHHoBEdktVJHBS3l6RnB8/PDti4QrgzHSAuBmpNejuHZj2EQBPG9Ya+Xao OChmMFdhfRsn8ymHn9IUddXgKwQHxwcajZbcy3RUUVkRi3YoidJPy63M6vb0y6yfJjiO Xsh60CWtYecQ2EALFpsCZyUAlVJtVSpHwldz++vqjtW6xHR4G6sdLwJt1G4FmoC7PTRt uNFg== X-Received: by 10.70.102.234 with SMTP id fr10mr23651972pdb.145.1417746986310; Thu, 04 Dec 2014 18:36:26 -0800 (PST) Received: from ld-irv-0074.broadcom.com (5520-maca-inet1-outside.broadcom.com. [216.31.211.11]) by mx.google.com with ESMTPSA id xq16sm18259359pac.31.2014.12.04.18.36.25 for (version=TLSv1.2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Thu, 04 Dec 2014 18:36:25 -0800 (PST) From: Brian Norris To: Subject: [PATCH 3/3] mtd: cfi_cmdset_{0001, 0002}: use common MTD reboot boilerplate Date: Thu, 4 Dec 2014 18:36:08 -0800 Message-Id: <1417746968-28747-3-git-send-email-computersforpeace@gmail.com> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1417746968-28747-1-git-send-email-computersforpeace@gmail.com> References: <1417746968-28747-1-git-send-email-computersforpeace@gmail.com> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20141204_183647_762369_5FB44DB4 X-CRM114-Status: GOOD ( 12.72 ) X-Spam-Score: -0.8 (/) X-Spam-Report: SpamAssassin version 3.4.0 on bombadil.infradead.org summary: Content analysis details: (-0.8 points) pts rule name description ---- ---------------------- -------------------------------------------------- -0.7 RCVD_IN_DNSWL_LOW RBL: Sender listed at http://www.dnswl.org/, low trust [2607:f8b0:400e:c03:0:0:0:236 listed in] [list.dnswl.org] -0.0 SPF_PASS SPF: sender matches SPF record 0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail provider (computersforpeace[at]gmail.com) -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from author's domain 0.1 DKIM_SIGNED Message has a DKIM or DK signature, not necessarily valid -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature Cc: cdoban@broadcom.com, rjui@broadcom.com, Brian Norris , sbranden@broadcom.com X-BeenThere: linux-mtd@lists.infradead.org X-Mailman-Version: 2.1.18-1 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 We don't have to implement this glue code in the chip driver any more. Signed-off-by: Brian Norris Tested-by: Guenter Roeck --- Not tested yet drivers/mtd/chips/cfi_cmdset_0001.c | 22 +++------------------- drivers/mtd/chips/cfi_cmdset_0002.c | 22 +++------------------- 2 files changed, 6 insertions(+), 38 deletions(-) diff --git a/drivers/mtd/chips/cfi_cmdset_0001.c b/drivers/mtd/chips/cfi_cmdset_0001.c index 286b97a304cf..3df9744496b2 100644 --- a/drivers/mtd/chips/cfi_cmdset_0001.c +++ b/drivers/mtd/chips/cfi_cmdset_0001.c @@ -28,7 +28,6 @@ #include #include #include -#include #include #include #include @@ -80,7 +79,7 @@ static int cfi_intelext_get_user_prot_info(struct mtd_info *, size_t, #endif static int cfi_intelext_suspend (struct mtd_info *); static void cfi_intelext_resume (struct mtd_info *); -static int cfi_intelext_reboot (struct notifier_block *, unsigned long, void *); +static void cfi_intelext_reset(struct mtd_info *); static void cfi_intelext_destroy(struct mtd_info *); @@ -486,13 +485,12 @@ struct mtd_info *cfi_cmdset_0001(struct map_info *map, int primary) mtd->_is_locked = cfi_intelext_is_locked; mtd->_suspend = cfi_intelext_suspend; mtd->_resume = cfi_intelext_resume; + mtd->_reboot = cfi_intelext_reset; mtd->flags = MTD_CAP_NORFLASH; mtd->name = map->name; mtd->writesize = 1; mtd->writebufsize = cfi_interleave(cfi) << cfi->cfiq->MaxBufWriteSize; - mtd->reboot_notifier.notifier_call = cfi_intelext_reboot; - if (cfi->cfi_mode == CFI_MODE_CFI) { /* * It's a real CFI chip, not one for which the probe @@ -646,7 +644,6 @@ static struct mtd_info *cfi_intelext_setup(struct mtd_info *mtd) goto setup_err; __module_get(THIS_MODULE); - register_reboot_notifier(&mtd->reboot_notifier); return mtd; setup_err: @@ -2605,7 +2602,7 @@ static void cfi_intelext_resume(struct mtd_info *mtd) cfi_intelext_restore_locks(mtd); } -static int cfi_intelext_reset(struct mtd_info *mtd) +static void cfi_intelext_reset(struct mtd_info *mtd) { struct map_info *map = mtd->priv; struct cfi_private *cfi = map->fldrv_priv; @@ -2626,18 +2623,6 @@ static int cfi_intelext_reset(struct mtd_info *mtd) } mutex_unlock(&chip->mutex); } - - return 0; -} - -static int cfi_intelext_reboot(struct notifier_block *nb, unsigned long val, - void *v) -{ - struct mtd_info *mtd; - - mtd = container_of(nb, struct mtd_info, reboot_notifier); - cfi_intelext_reset(mtd); - return NOTIFY_DONE; } static void cfi_intelext_destroy(struct mtd_info *mtd) @@ -2647,7 +2632,6 @@ static void cfi_intelext_destroy(struct mtd_info *mtd) struct mtd_erase_region_info *region; int i; cfi_intelext_reset(mtd); - unregister_reboot_notifier(&mtd->reboot_notifier); kfree(cfi->cmdset_priv); kfree(cfi->cfiq); kfree(cfi->chips[0].priv); diff --git a/drivers/mtd/chips/cfi_cmdset_0002.c b/drivers/mtd/chips/cfi_cmdset_0002.c index c50d8cf0f60d..c4f63482cf96 100644 --- a/drivers/mtd/chips/cfi_cmdset_0002.c +++ b/drivers/mtd/chips/cfi_cmdset_0002.c @@ -31,7 +31,6 @@ #include #include #include -#include #include #include #include @@ -57,7 +56,7 @@ static int cfi_amdstd_erase_varsize(struct mtd_info *, struct erase_info *); static void cfi_amdstd_sync (struct mtd_info *); static int cfi_amdstd_suspend (struct mtd_info *); static void cfi_amdstd_resume (struct mtd_info *); -static int cfi_amdstd_reboot(struct notifier_block *, unsigned long, void *); +static void cfi_amdstd_reset(struct mtd_info *); static int cfi_amdstd_get_fact_prot_info(struct mtd_info *, size_t, size_t *, struct otp_info *); static int cfi_amdstd_get_user_prot_info(struct mtd_info *, size_t, @@ -529,6 +528,7 @@ struct mtd_info *cfi_cmdset_0002(struct map_info *map, int primary) mtd->_sync = cfi_amdstd_sync; mtd->_suspend = cfi_amdstd_suspend; mtd->_resume = cfi_amdstd_resume; + mtd->_reboot = cfi_amdstd_reset; mtd->_read_user_prot_reg = cfi_amdstd_read_user_prot_reg; mtd->_read_fact_prot_reg = cfi_amdstd_read_fact_prot_reg; mtd->_get_fact_prot_info = cfi_amdstd_get_fact_prot_info; @@ -544,7 +544,6 @@ struct mtd_info *cfi_cmdset_0002(struct map_info *map, int primary) mtd->writebufsize); mtd->_panic_write = cfi_amdstd_panic_write; - mtd->reboot_notifier.notifier_call = cfi_amdstd_reboot; if (cfi->cfi_mode==CFI_MODE_CFI){ unsigned char bootloc; @@ -717,7 +716,6 @@ static struct mtd_info *cfi_amdstd_setup(struct mtd_info *mtd) } __module_get(THIS_MODULE); - register_reboot_notifier(&mtd->reboot_notifier); return mtd; setup_err: @@ -2871,7 +2869,7 @@ static void cfi_amdstd_resume(struct mtd_info *mtd) * the flash is in query/program/erase mode will prevent the CPU from * fetching the bootloader code, requiring a hard reset or power cycle. */ -static int cfi_amdstd_reset(struct mtd_info *mtd) +static void cfi_amdstd_reset(struct mtd_info *mtd) { struct map_info *map = mtd->priv; struct cfi_private *cfi = map->fldrv_priv; @@ -2893,19 +2891,6 @@ static int cfi_amdstd_reset(struct mtd_info *mtd) mutex_unlock(&chip->mutex); } - - return 0; -} - - -static int cfi_amdstd_reboot(struct notifier_block *nb, unsigned long val, - void *v) -{ - struct mtd_info *mtd; - - mtd = container_of(nb, struct mtd_info, reboot_notifier); - cfi_amdstd_reset(mtd); - return NOTIFY_DONE; } @@ -2915,7 +2900,6 @@ static void cfi_amdstd_destroy(struct mtd_info *mtd) struct cfi_private *cfi = map->fldrv_priv; cfi_amdstd_reset(mtd); - unregister_reboot_notifier(&mtd->reboot_notifier); kfree(cfi->cmdset_priv); kfree(cfi->cfiq); kfree(cfi);