From patchwork Thu Jan 14 15:08:54 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bin Meng X-Patchwork-Id: 12019783 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.5 required=3.0 tests=BAYES_00, DKIM_ADSP_CUSTOM_MED,DKIM_INVALID,DKIM_SIGNED,FREEMAIL_FORGED_FROMDOMAIN, FREEMAIL_FROM,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER, INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED, USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id DE419C433DB for ; Thu, 14 Jan 2021 15:13:56 +0000 (UTC) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 7A8C323A5F for ; Thu, 14 Jan 2021 15:13:56 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 7A8C323A5F Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Received: from localhost ([::1]:50886 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1l04Ju-0000dr-In for qemu-devel@archiver.kernel.org; Thu, 14 Jan 2021 10:13:55 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:47276) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1l04Fs-0005Lx-2P; Thu, 14 Jan 2021 10:09:45 -0500 Received: from mail-pj1-x1036.google.com ([2607:f8b0:4864:20::1036]:35755) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1l04Fp-0003mM-4L; Thu, 14 Jan 2021 10:09:43 -0500 Received: by mail-pj1-x1036.google.com with SMTP id b5so3357332pjl.0; Thu, 14 Jan 2021 07:09:40 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=FfB23SnNfNBOgiYxokOcghI0Q+ia/hscI8/Az4dXuB8=; b=Fn+dJNZY1iW18yB3SckoQ1wrxWk5favlIHkAYZR0qXfj6Sgs28cTy1Yo6KHsjKfzsH QJRDMjYVXztJutQM/GnRRL98/cvbQFXTZJ2Eqfr/1Z/YbMvM8JL6d25J6k5hywUkOzy5 aU6mk1xgQr8AxhReVzzEKYavuHAB6npKL+c0FCLzZFK7lDL876pMFHo3BVH2JUWctooX /UbR6MoYHoZU4mmHH9d8S/RQDooCM13KOzWwtugOTnoQR152DtRM7ZKRsnjqp5ayfAYs wN6QH1AgnbECgCEVsBiKh0DgXxsM78LvYcH9BZ1+GlE5p0POBwyxd8RLzI6Nf9w5TpIF zOug== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=FfB23SnNfNBOgiYxokOcghI0Q+ia/hscI8/Az4dXuB8=; b=J97Z9432ldfA+vgyPF104qfgdDrgpLAx6PH6Ik9TpajcFbeOo1TeYfR9vZ/UGf+lug B35VMhP1JV0Pu0s55ejB1cdxNvN8OixAHtzHf1KRfLw3P+zR9sL4+xnPL/PS+bUXMNbm QoZtrlPU4R71rf/hFHfM3gOlVs1ueejMQa9SraJYGPdby+9J81slJyxTX4qYAgVEporj LliAEb+0yWI9eLjzH5VuqicRg9OJMi3LTSsTfDubL/Xh7m93z95LWtvkqJf47MRAkm1Y fc8VW5JZwR9M0ICxHLzKy5IYEdZOC53MIs+7WhBDWsJZh2saZ17Hgq7yTvTAp7tOirQP KDeg== X-Gm-Message-State: AOAM531vwguCSuOg2VrL7S8KUInm7Iwq6cD8al4x6pq6eFcDGZ+vfBka dGd3oUoIHMbHYNA9wkCBb+U= X-Google-Smtp-Source: ABdhPJx23JxUTfUhk7rk901jxYeJ0+dD8mEiLT0ff1dVV+9rlUMrwRvRg7bplcsTAiqmCxkgO6xMEg== X-Received: by 2002:a17:902:c1cc:b029:da:dd7c:2ac7 with SMTP id c12-20020a170902c1ccb02900dadd7c2ac7mr7852021plc.25.1610636978595; Thu, 14 Jan 2021 07:09:38 -0800 (PST) Received: from i9-aorus-gtx1080.localdomain (144.168.56.201.16clouds.com. [144.168.56.201]) by smtp.gmail.com with ESMTPSA id w21sm5372051pfq.67.2021.01.14.07.09.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 14 Jan 2021 07:09:38 -0800 (PST) From: Bin Meng To: Alistair Francis , =?utf-8?q?Philippe_Mathieu-?= =?utf-8?q?Daud=C3=A9?= , Peter Maydell , Francisco Iglesias Subject: [PATCH 1/9] hw/block: m25p80: Fix the number of dummy bytes needed for Windbond flashes Date: Thu, 14 Jan 2021 23:08:54 +0800 Message-Id: <20210114150902.11515-2-bmeng.cn@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210114150902.11515-1-bmeng.cn@gmail.com> References: <20210114150902.11515-1-bmeng.cn@gmail.com> MIME-Version: 1.0 Received-SPF: pass client-ip=2607:f8b0:4864:20::1036; envelope-from=bmeng.cn@gmail.com; helo=mail-pj1-x1036.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Kevin Wolf , qemu-block@nongnu.org, Marcin Krzeminski , Bin Meng , qemu-devel@nongnu.org, Max Reitz , =?utf-8?q?C=C3=A9dric_Le_Goater?= Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" From: Bin Meng The m25p80 model uses s->needed_bytes to indicate how many follow-up bytes are expected to be received after it receives a command. For example, depending on the address mode, either 3-byte address or 4-byte address is needed. For fast read family commands, some dummy cycles are required after sending the address bytes, and the dummy cycles need to be counted in s->needed_bytes. This is where the mess began. As the variable name (needed_bytes) indicates, the unit is in byte. It is not in bit, or cycle. However for some reason the model has been using the number of dummy cycles for s->needed_bytes. The right approach is to convert the number of dummy cycles to bytes based on the SPI protocol, for example, 6 dummy cycles for the Fast Read Quad I/O (EBh) should be converted to 3 bytes per the formula (6 * 4 / 8). Things get complicated when interacting with different SPI or QSPI flash controllers. There are major two cases: - Dummy bytes prepared by drivers, and wrote to the controller fifo. For such case, driver will calculate the correct number of dummy bytes and write them into the tx fifo. Fixing the m25p80 model will fix flashes working with such controllers. - Dummy bytes not prepared by drivers. Drivers just tell the hardware the dummy cycle configuration via some registers, and hardware will automatically generate dummy cycles for us. Fixing the m25p80 model is not enough, and we will need to fix the SPI/QSPI models for such controllers. Let's fix the mess from the flash side first. We start from a easy one, the Winbond flashes. Per the Windbond W25Q256JV datasheet [1] instrunction set table (chapter 8.1.2, 8.1.3, 8.1.4, 8.1.5), fix the wrong number of dummy bytes needed for fast read commands. [1] https://www.winbond.com/resource-files/w25q256jv%20spi%20revb%2009202016.pdf Fixes: fe8477052831 ("m25p80: Fix QIOR/DIOR handling for Winbond") Fixes: 3830c7a460b8 ("m25p80: Fix WINBOND fast read command handling") Fixes: cf6f1efe0b57 ("m25p80: Fast read commands family changes") Signed-off-by: Bin Meng --- hw/block/m25p80.c | 24 ++++++++++++++++++------ 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/hw/block/m25p80.c b/hw/block/m25p80.c index b744a58d1c..c947716f99 100644 --- a/hw/block/m25p80.c +++ b/hw/block/m25p80.c @@ -875,9 +875,22 @@ static void decode_fast_read_cmd(Flash *s) { s->needed_bytes = get_addr_length(s); switch (get_man(s)) { - /* Dummy cycles - modeled with bytes writes instead of bits */ + /* Dummy cycles - modeled with bytes writes */ case MAN_WINBOND: - s->needed_bytes += 8; + switch (s->cmd_in_progress) { + case FAST_READ: + case FAST_READ4: + s->needed_bytes += 1; + break; + case DOR: + case DOR4: + s->needed_bytes += 2; + break; + case QOR: + case QOR4: + s->needed_bytes += 4; + break; + } break; case MAN_NUMONYX: s->needed_bytes += numonyx_extract_cfg_num_dummies(s); @@ -906,7 +919,7 @@ static void decode_fast_read_cmd(Flash *s) static void decode_dio_read_cmd(Flash *s) { s->needed_bytes = get_addr_length(s); - /* Dummy cycles modeled with bytes writes instead of bits */ + /* Dummy cycles modeled with bytes writes */ switch (get_man(s)) { case MAN_WINBOND: s->needed_bytes += WINBOND_CONTINUOUS_READ_MODE_CMD_LEN; @@ -945,11 +958,10 @@ static void decode_dio_read_cmd(Flash *s) static void decode_qio_read_cmd(Flash *s) { s->needed_bytes = get_addr_length(s); - /* Dummy cycles modeled with bytes writes instead of bits */ + /* Dummy cycles modeled with bytes writes */ switch (get_man(s)) { case MAN_WINBOND: - s->needed_bytes += WINBOND_CONTINUOUS_READ_MODE_CMD_LEN; - s->needed_bytes += 4; + s->needed_bytes += WINBOND_CONTINUOUS_READ_MODE_CMD_LEN + 2; break; case MAN_SPANSION: s->needed_bytes += SPANSION_CONTINUOUS_READ_MODE_CMD_LEN; From patchwork Thu Jan 14 15:08:55 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bin Meng X-Patchwork-Id: 12019781 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.5 required=3.0 tests=BAYES_00, DKIM_ADSP_CUSTOM_MED,DKIM_INVALID,DKIM_SIGNED,FREEMAIL_FORGED_FROMDOMAIN, FREEMAIL_FROM,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER, INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED, USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 23E2CC433E0 for ; Thu, 14 Jan 2021 15:13:19 +0000 (UTC) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id A931123A5F for ; Thu, 14 Jan 2021 15:13:18 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org A931123A5F Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Received: from localhost ([::1]:49712 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1l04JJ-0008IS-BU for qemu-devel@archiver.kernel.org; Thu, 14 Jan 2021 10:13:17 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:47302) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1l04G0-0005Rs-Un; Thu, 14 Jan 2021 10:09:53 -0500 Received: from mail-pf1-x42a.google.com ([2607:f8b0:4864:20::42a]:40960) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1l04Fy-0003po-DW; Thu, 14 Jan 2021 10:09:52 -0500 Received: by mail-pf1-x42a.google.com with SMTP id q20so3510896pfu.8; Thu, 14 Jan 2021 07:09:49 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=EdssrEX6altoW4/e6bprbKcSaVYKf/sGKzo5DjP+ADw=; b=UgDoRmUHykC6GFljJ13a8uLPwVQ6ZC3joDGZGbUMzl/o94Z9UtK6OEDnLjVPc9vACU uQasm/me4voI6M6XOmPEklMe5YhLyxl4RqHwcW03VX2ahCGrVPbZYi1kBSDVpYSaMhfW d0ZuaCDwSJ0il9HY6v3srslvfeIZSnrRx/qk2u6ySdZTfYYNiSfAh1sdWxG0d9JH/EUa kW8QuWZEbkQ6lpDfqzn4/dzgDef1lUrl5Sjqr6F+aHyAcx/CJOOL1bHiH/vNKHUVCy2M Yno/dnfmooFw0mKrYkwm02Bj1RJIXI1DsmW1G2EZ0AH1feKjhwFQInCKdRZ2z1qG4AOQ MhTQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=EdssrEX6altoW4/e6bprbKcSaVYKf/sGKzo5DjP+ADw=; b=tymGZmq9Y3FmLsnEez6hyUv9yWe8vu5yZ3Bs4mt54p8odxhkXgeo92wwc0TA6cAbNS lVdMvtGoXK9jCyfQjBVFbQV2u3OIslNqmLcKsBVdCRKkWeSvxFIBvgLj2qeKSAoFsHzz 1tZ/w5Xt1mBNPWjLj88hLCfzyKtIWCmWcqOjqdFKk136DLksZ8fajYvdCqUFE/pqFtLH PjAgiac+iNMbSfgIezqfdbboXU1VtHmtqVMyFReyhZZCpAty6fTYCJ+H0O9VnEBZ6xny VVwMAx67MQKgV8qn4MtdYsJZRa9MtY8vS2XdR09wNZmBiFEHoZRkHrmI8ATvDGFKQq+N z3ww== X-Gm-Message-State: AOAM533ph2J1FnsXOZSebPHIKXcvqPu8tS1AUMJTyzcO7X0qF6BDDck0 n0YSedysa65HlsE3mg57cPg= X-Google-Smtp-Source: ABdhPJxMSzfyOh1JiVhdPNk6uWAGoS0HOxda0d+6/MqDrfatIu46JB0pDPPNfZ5MCnUl1HGfXwTDNw== X-Received: by 2002:a63:286:: with SMTP id 128mr7898949pgc.246.1610636988486; Thu, 14 Jan 2021 07:09:48 -0800 (PST) Received: from i9-aorus-gtx1080.localdomain (144.168.56.201.16clouds.com. [144.168.56.201]) by smtp.gmail.com with ESMTPSA id w21sm5372051pfq.67.2021.01.14.07.09.39 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 14 Jan 2021 07:09:48 -0800 (PST) From: Bin Meng To: Alistair Francis , =?utf-8?q?Philippe_Mathieu-?= =?utf-8?q?Daud=C3=A9?= , Peter Maydell , Francisco Iglesias Subject: [PATCH 2/9] hw/block: m25p80: Fix the number of dummy bytes needed for Numonyx/Micron flashes Date: Thu, 14 Jan 2021 23:08:55 +0800 Message-Id: <20210114150902.11515-3-bmeng.cn@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210114150902.11515-1-bmeng.cn@gmail.com> References: <20210114150902.11515-1-bmeng.cn@gmail.com> MIME-Version: 1.0 Received-SPF: pass client-ip=2607:f8b0:4864:20::42a; envelope-from=bmeng.cn@gmail.com; helo=mail-pf1-x42a.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Kevin Wolf , qemu-block@nongnu.org, Marcin Krzeminski , Bin Meng , qemu-devel@nongnu.org, Max Reitz , Joe Komlodi Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" From: Bin Meng Unfortunately the dummy cycle/bytes calculation for Numonyx/Micron flashes is still wrong, even though there were fixes before that tried to fix it. First of all, the default number of dummy cycles is only related to the SPI protocol mode. For QSPI it is 10, otherwise it is 8. Secondly, per the datasheet [1], it's clear that in Quad I/O or Dual I/O mode, the dummy bits show up on 4 or 2 lines. The tricky part is the standard mode (extended mode). For such mode, the dummy bits are not like other flashes that they show up on the same lines as the address bits, but on the same lines as the data bits, so for a Quad Output Fast Read command (6Bh), the dummy bits must be sent on all the 4 IO lines. IOW, the total number of dummy bits depend on the command. The datasheet does not state crystal clearly how many lines are used for 6Bh in the standard mode. We may only tell from figure 19 that is showing the command sequence and interpret that dummy cycles need to be on 4 lines for 6Bh. Note as of today, both spi-nor drivers in U-Boot v2021.01 and Linux v5.10 has the wrong assumption for all flashes that dummy cycle bus width is the same as the address bits bus width, which is not true for the Numonyx/Micron flash in the standard mode. Last if the total number of dummy bits is not multiple of 8, log an unimplemented message to notify user, and round it up. Right now the QEMU ssi_transfer() API transfers one byte each time to the flash. Leaving such as unimplemented will not cause any issue because as of today both spi-nor drivers in U-Boot and Linux have the assumption that the total number of dummy bits must be multiple of 8. [1] https://media-www.micron.com/-/media/client/global/documents/products/ data-sheet/nor-flash/serial-nor/n25q/n25q_512mb_1ce_3v_65nm.pdf Fixes: 23af26856606 ("hw/block/m25p80: Fix Numonyx fast read dummy cycle count") Signed-off-by: Bin Meng --- hw/block/m25p80.c | 62 +++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 57 insertions(+), 5 deletions(-) diff --git a/hw/block/m25p80.c b/hw/block/m25p80.c index c947716f99..c8cd12a6d3 100644 --- a/hw/block/m25p80.c +++ b/hw/block/m25p80.c @@ -856,19 +856,71 @@ static uint8_t numonyx_extract_cfg_num_dummies(Flash *s) mode = numonyx_mode(s); num_dummies = extract32(s->volatile_cfg, 4, 4); + /* + * The default nubmer of dummy cycles is only related to the SPI + * protocol mode. For QSPI it is 10, otherwise it is 8. + */ if (num_dummies == 0x0 || num_dummies == 0xf) { + num_dummies = (mode == MODE_QIO) ? 10 : 8; + } + + /* + * Convert the number of dummy cycles to bytes + * + * Per the datasheet, it's clear that in Quad I/O or Dual I/O mode, + * the dummy bits show up on 4 or 2 lines. + * + * The tricky part is the standard mode (extended mode). For such + * mode, the dummy bits are not like other flashes that they show up + * on the same lines as the address bits, but on the same lines as + * the data bits, so for a Quad Output Fast Read command (6Bh), the + * dummy bits must be sent on all the 4 IO lines. IOW, the total + * number of dummy bits depend on the command. + * + * The datasheet does not state crystal clearly how many lines are + * used for 6Bh in the standard mode. We may only tell from figure 19 + * that is showing the command sequence and interpret that dummy cycles + * need to be on 4 lines for 6Bh. + * + * Note as of today, both spi-nor drivers in U-Boot v2021.01 and Linux + * v5.10 has the wrong assumption for all flashes that dummy cycle bus + * width is the same as the address bits bus width, which is not true + * for the Numonyx/Micron flash in the standard mode. + */ + + if (mode == MODE_QIO) { + num_dummies *= 4; + } else if (mode == MODE_DIO) { + num_dummies *= 2; + } else { switch (s->cmd_in_progress) { + case QOR: + case QOR4: case QIOR: case QIOR4: - num_dummies = 10; + num_dummies *= 4; break; - default: - num_dummies = (mode == MODE_QIO) ? 10 : 8; + case DOR: + case DOR4: + case DIOR: + case DIOR4: + num_dummies *= 2; break; - } + } + } + + /* + * If the total number of dummy bits is not multiple of 8, log an + * unimplemented message to notify user, and round it up. + */ + if (num_dummies % 8) { + qemu_log_mask(LOG_UNIMP, + "M25P80: the number of dummy bits is not multiple of 8"); + num_dummies = ROUND_UP(num_dummies, 8); } - return num_dummies; + /* return the number of dummy bytes */ + return num_dummies / 8; } static void decode_fast_read_cmd(Flash *s) From patchwork Thu Jan 14 15:08:56 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bin Meng X-Patchwork-Id: 12019779 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.5 required=3.0 tests=BAYES_00, DKIM_ADSP_CUSTOM_MED,DKIM_INVALID,DKIM_SIGNED,FREEMAIL_FORGED_FROMDOMAIN, FREEMAIL_FROM,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER, INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED, USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 6BC32C433E0 for ; Thu, 14 Jan 2021 15:13:03 +0000 (UTC) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 2528423A5F for ; Thu, 14 Jan 2021 15:13:02 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 2528423A5F Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Received: from localhost ([::1]:49084 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1l04J3-0007yc-S0 for qemu-devel@archiver.kernel.org; Thu, 14 Jan 2021 10:13:01 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:47390) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1l04GC-0005dI-D1; Thu, 14 Jan 2021 10:10:04 -0500 Received: from mail-pl1-x62d.google.com ([2607:f8b0:4864:20::62d]:38353) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1l04GA-0003uQ-Jk; Thu, 14 Jan 2021 10:10:04 -0500 Received: by mail-pl1-x62d.google.com with SMTP id d4so3042840plh.5; Thu, 14 Jan 2021 07:10:01 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=mcBcS27E7c3TjZqbOJS0mQTFgaIbVwGSQqShb6dbs/E=; b=kAi+y4lz0UEsutVIpcmIb3cNFI8k5mtS7qxcjQzPOJNc3XgHH5k4+mvi7eCWKTH21s WhET6X+FFwRDkLQdHGzgL8CzszunUMBoPA9PvrZi/c474reKr2fe8E5x8nNO0IwTEoUh /Mty/mF1ITZgIE+b1hOz6oxRQ0ZJWNM+cBeA3VFdMOysLxlYJbcBbKvPm4fY209y0yLI I7lPito7aZPF7C66LXl76bRhvH77bClKmv+PO7s62FdeCWhqDEh0tb0krPb0af+wnBJE mXHOTxR+Ls2YuCbihTbSkaXwLiCh0C2gfzBBP2DcKe7RQmKmGbwBhTojzzM4EWikZas4 /k/Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=mcBcS27E7c3TjZqbOJS0mQTFgaIbVwGSQqShb6dbs/E=; b=QA2xakFgO0pSjXDmrA7ZXYo6WXGJyvDsin1YkuBsbJ/Zr9jWow79ZIyiTDpxq3g9qG 7iuN3cjHaFiqR11uA3eVmIrb0bNQBYjV4OQr8sTLsKRm18Zvo2yUqeyTx87po/TLVX2x mfYHdaQNI1WpaVjjLSK4leSNPQd4lBYopO+rZmJpQzVeR0v83gMcNgnamg//vbpTX83q txtPzkes+Z8RXwiN3plFud1g52DN5etph6udL33Gf1iSDdLaQzSJpcafiPTOED4wge7C 2YaexHMS14hPMCfQR9k/YHfzy14Y4Cp6cZmuVOZNn6IlH1uuNoslKpHfpFSrI3y7s08O QQKw== X-Gm-Message-State: AOAM5316ZIFu+G5KdwBwrpGcJytsKqf6508DMuynw/T4UyzTLu775kcK IeKKU9YgUxjAcQgY5505/2o= X-Google-Smtp-Source: ABdhPJz+v2xYDIBJJ35UHwRTzmHd4sl+fQlhdjweWQjJL0BJszcprNAlwmvMdnn1THMJFik2kPMr1A== X-Received: by 2002:a17:90a:e006:: with SMTP id u6mr5192404pjy.201.1610637001064; Thu, 14 Jan 2021 07:10:01 -0800 (PST) Received: from i9-aorus-gtx1080.localdomain (144.168.56.201.16clouds.com. [144.168.56.201]) by smtp.gmail.com with ESMTPSA id w21sm5372051pfq.67.2021.01.14.07.09.49 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 14 Jan 2021 07:10:00 -0800 (PST) From: Bin Meng To: Alistair Francis , =?utf-8?q?Philippe_Mathieu-?= =?utf-8?q?Daud=C3=A9?= , Peter Maydell , Francisco Iglesias Subject: [PATCH 3/9] hw/block: m25p80: Fix the number of dummy bytes needed for Macronix flashes Date: Thu, 14 Jan 2021 23:08:56 +0800 Message-Id: <20210114150902.11515-4-bmeng.cn@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210114150902.11515-1-bmeng.cn@gmail.com> References: <20210114150902.11515-1-bmeng.cn@gmail.com> MIME-Version: 1.0 Received-SPF: pass client-ip=2607:f8b0:4864:20::62d; envelope-from=bmeng.cn@gmail.com; helo=mail-pl1-x62d.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Kevin Wolf , qemu-block@nongnu.org, Marcin Krzeminski , Bin Meng , qemu-devel@nongnu.org, Max Reitz Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" From: Bin Meng Per datasheet [1], the number of dummy cycles for Macronix flashes is configurable via two volatible bits (DC1, DC2) in a configuration register. Do the same dummy cycle to dummy byte conversion fix as others. [1] https://www.macronix.com/Lists/Datasheet/Attachments/7674/MX66U51235F,%201.8V,%20512Mb,%20v1.1.pdf Fixes: cf6f1efe0b57 ("m25p80: Fast read commands family changes") Signed-off-by: Bin Meng --- hw/block/m25p80.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/hw/block/m25p80.c b/hw/block/m25p80.c index c8cd12a6d3..44508b3da9 100644 --- a/hw/block/m25p80.c +++ b/hw/block/m25p80.c @@ -949,10 +949,10 @@ static void decode_fast_read_cmd(Flash *s) break; case MAN_MACRONIX: if (extract32(s->volatile_cfg, 6, 2) == 1) { - s->needed_bytes += 6; - } else { - s->needed_bytes += 8; + qemu_log_mask(LOG_UNIMP, + "M25P80: the number of dummy bits is not multiple of 8"); } + s->needed_bytes += 1; break; case MAN_SPANSION: s->needed_bytes += extract32(s->spansion_cr2v, @@ -989,13 +989,14 @@ static void decode_dio_read_cmd(Flash *s) case MAN_MACRONIX: switch (extract32(s->volatile_cfg, 6, 2)) { case 1: - s->needed_bytes += 6; - break; + qemu_log_mask(LOG_UNIMP, + "M25P80: the number of dummy bits is not multiple of 8"); + /* fall-through */ case 2: - s->needed_bytes += 8; + s->needed_bytes += 2; break; default: - s->needed_bytes += 4; + s->needed_bytes += 1; break; } break; @@ -1028,13 +1029,13 @@ static void decode_qio_read_cmd(Flash *s) case MAN_MACRONIX: switch (extract32(s->volatile_cfg, 6, 2)) { case 1: - s->needed_bytes += 4; + s->needed_bytes += 2; break; case 2: - s->needed_bytes += 8; + s->needed_bytes += 4; break; default: - s->needed_bytes += 6; + s->needed_bytes += 3; break; } break; From patchwork Thu Jan 14 15:08:57 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bin Meng X-Patchwork-Id: 12019787 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.5 required=3.0 tests=BAYES_00, DKIM_ADSP_CUSTOM_MED,DKIM_INVALID,DKIM_SIGNED,FREEMAIL_FORGED_FROMDOMAIN, FREEMAIL_FROM,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER, INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED, USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 51BDFC433E0 for ; Thu, 14 Jan 2021 15:16:41 +0000 (UTC) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 0D71023A9B for ; Thu, 14 Jan 2021 15:16:41 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 0D71023A9B Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Received: from localhost ([::1]:58128 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1l04Ma-00045b-51 for qemu-devel@archiver.kernel.org; Thu, 14 Jan 2021 10:16:40 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:47450) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1l04GI-0005rz-R5; Thu, 14 Jan 2021 10:10:10 -0500 Received: from mail-pj1-x102b.google.com ([2607:f8b0:4864:20::102b]:52026) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1l04GG-0003xc-Rx; Thu, 14 Jan 2021 10:10:10 -0500 Received: by mail-pj1-x102b.google.com with SMTP id y12so3237745pji.1; Thu, 14 Jan 2021 07:10:08 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=t2ETafJuNe5QRSDUuiXSiKWyirde+D6J5I6WLc2cTvc=; b=a9gt0Q8jmR77DGEN9ARNwmR9UyaGiGnpffSX1nhuJSEQYZDM6zsYnqQoms/3U55Ich 8htrfohCk4b0bjiWkqWv/fxw/2I83B2CJY8heHz6vnNWD4tWHuoE1rvOf4cDsave4ijN 3P2rgSshmCn1iahEIIHdlVj1SB+kLPBt1RQIDbewe/rpUA1NrUchyATvrjjqSbMyp2Uy SXa9r/qJa/V4sCfHVBvjYs+PFfgpURo/zWWDK5cFFwpzzIHfAuHWz8SvwbezDL5VHGkx 9XsH6oN856+gDmr3Y2r8eO+E5+f1NFMtbvln/i075HU449+LH1fuokiv5RvMSQ1s2jp2 JbEw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=t2ETafJuNe5QRSDUuiXSiKWyirde+D6J5I6WLc2cTvc=; b=GxbCxIjtagWkyopdBtCqWimho+bLAqTWr185vrHBnmPqVoFhxk5Rz0WAyNd8EER2td VedWVkgzM4Xc56+fdUayXVP3YRgKjE07Y57SnkiwoUFh5wLzzvXWAyIFcMXe8BjJffPf UIJIZu9uq6rhj6CxSSoqnW4m0WnxKYvS2S8qHtYBtKqZxagsqITFjihPT5G6gtErNWF9 uKsCb9CviTz/e48jQTZZDHpKKRwaWO9KZCQ/5ukAP6xbcPYHVkR7XnBXlopTzBPUgKTy U+MG6WuraMXaJtAPgaR/4LgxnxsiZsLXOvcCmRxIdy9QATlpc80u9nwl25oXc80UujF5 D6UQ== X-Gm-Message-State: AOAM532ZQZfi2HstJI9WHtPrW+6TvHjxk/NeOvMXB3UN1tqWdtMuXHeK U67gg0dYW1yeiITIQkyunwh3SB453A4= X-Google-Smtp-Source: ABdhPJw8NAxCnsFrVs/ldkcB3mh5G1EcF0JfKtGmdTJq3PvAIXSYQITBrxcYeGNFLFTWVQCWIZGGCw== X-Received: by 2002:a17:90a:520e:: with SMTP id v14mr4624083pjh.233.1610637007333; Thu, 14 Jan 2021 07:10:07 -0800 (PST) Received: from i9-aorus-gtx1080.localdomain (144.168.56.201.16clouds.com. [144.168.56.201]) by smtp.gmail.com with ESMTPSA id w21sm5372051pfq.67.2021.01.14.07.10.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 14 Jan 2021 07:10:06 -0800 (PST) From: Bin Meng To: Alistair Francis , =?utf-8?q?Philippe_Mathieu-?= =?utf-8?q?Daud=C3=A9?= , Peter Maydell , Francisco Iglesias Subject: [PATCH 4/9] hw/block: m25p80: Fix the number of dummy bytes needed for Spansion flashes Date: Thu, 14 Jan 2021 23:08:57 +0800 Message-Id: <20210114150902.11515-5-bmeng.cn@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210114150902.11515-1-bmeng.cn@gmail.com> References: <20210114150902.11515-1-bmeng.cn@gmail.com> MIME-Version: 1.0 Received-SPF: pass client-ip=2607:f8b0:4864:20::102b; envelope-from=bmeng.cn@gmail.com; helo=mail-pj1-x102b.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Kevin Wolf , qemu-block@nongnu.org, Marcin Krzeminski , Bin Meng , qemu-devel@nongnu.org, Max Reitz Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" From: Bin Meng Per datasheet [1], the number of dummy cycles for Spansion flashes is configurable via 4 volatible bits in a configuration register. Do the same dummy cycle to dummy byte conversion fix as others. [1] https://www.cypress.com/file/316171/download Signed-off-by: Bin Meng --- hw/block/m25p80.c | 43 +++++++++++++++++++++++++++++++------------ 1 file changed, 31 insertions(+), 12 deletions(-) diff --git a/hw/block/m25p80.c b/hw/block/m25p80.c index 44508b3da9..e1e5d5a76f 100644 --- a/hw/block/m25p80.c +++ b/hw/block/m25p80.c @@ -955,10 +955,25 @@ static void decode_fast_read_cmd(Flash *s) s->needed_bytes += 1; break; case MAN_SPANSION: - s->needed_bytes += extract32(s->spansion_cr2v, - SPANSION_DUMMY_CLK_POS, - SPANSION_DUMMY_CLK_LEN - ); + if (extract32(s->spansion_cr2v, SPANSION_DUMMY_CLK_POS, + SPANSION_DUMMY_CLK_LEN) != 8) { + qemu_log_mask(LOG_UNIMP, + "M25P80: the number of dummy bits is not multiple of 8"); + } + switch (s->cmd_in_progress) { + case FAST_READ: + case FAST_READ4: + s->needed_bytes += 1; + break; + case DOR: + case DOR4: + s->needed_bytes += 2; + break; + case QOR: + case QOR4: + s->needed_bytes += 4; + break; + } break; default: break; @@ -978,10 +993,12 @@ static void decode_dio_read_cmd(Flash *s) break; case MAN_SPANSION: s->needed_bytes += SPANSION_CONTINUOUS_READ_MODE_CMD_LEN; - s->needed_bytes += extract32(s->spansion_cr2v, - SPANSION_DUMMY_CLK_POS, - SPANSION_DUMMY_CLK_LEN - ); + if (extract32(s->spansion_cr2v, SPANSION_DUMMY_CLK_POS, + SPANSION_DUMMY_CLK_LEN) != 8) { + qemu_log_mask(LOG_UNIMP, + "M25P80: the number of dummy bits is not multiple of 8"); + } + s->needed_bytes += 2; break; case MAN_NUMONYX: s->needed_bytes += numonyx_extract_cfg_num_dummies(s); @@ -1018,10 +1035,12 @@ static void decode_qio_read_cmd(Flash *s) break; case MAN_SPANSION: s->needed_bytes += SPANSION_CONTINUOUS_READ_MODE_CMD_LEN; - s->needed_bytes += extract32(s->spansion_cr2v, - SPANSION_DUMMY_CLK_POS, - SPANSION_DUMMY_CLK_LEN - ); + if (extract32(s->spansion_cr2v, SPANSION_DUMMY_CLK_POS, + SPANSION_DUMMY_CLK_LEN) != 8) { + qemu_log_mask(LOG_UNIMP, + "M25P80: the number of dummy bits is not multiple of 8"); + } + s->needed_bytes += 4; break; case MAN_NUMONYX: s->needed_bytes += numonyx_extract_cfg_num_dummies(s); From patchwork Thu Jan 14 15:08:58 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bin Meng X-Patchwork-Id: 12019811 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.6 required=3.0 tests=BAYES_00, DKIM_ADSP_CUSTOM_MED,DKIM_INVALID,DKIM_SIGNED,FREEMAIL_FORGED_FROMDOMAIN, FREEMAIL_FROM,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER, INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 73EFBC433DB for ; Thu, 14 Jan 2021 15:20:41 +0000 (UTC) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 0F04E23B01 for ; Thu, 14 Jan 2021 15:20:40 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 0F04E23B01 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Received: from localhost ([::1]:38222 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1l04QQ-0007r8-8k for qemu-devel@archiver.kernel.org; Thu, 14 Jan 2021 10:20:40 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:47506) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1l04GZ-00068r-BG; Thu, 14 Jan 2021 10:10:27 -0500 Received: from mail-pf1-x433.google.com ([2607:f8b0:4864:20::433]:47085) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1l04GX-00049F-Iq; Thu, 14 Jan 2021 10:10:27 -0500 Received: by mail-pf1-x433.google.com with SMTP id w2so3487097pfc.13; Thu, 14 Jan 2021 07:10:24 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=bnloPjCNqMXt/4pwLudRlG/+uRuop2VlpB/XYKBzID8=; b=Ldjj4cAnoba7WgN2B3kDbEpAnd79x5JaJ7OEy5Y9AjtDLXifZxxs71uFm1KM5b6yY5 /HndBKlcxVZDib3mD7haLS8R74OYizNwsZhwfMN1ymhKUeDAvKLryI7bIpQkcBxQr1b9 IA1dPe7fCfhHm1Q77To9AsTgFDmfXZY/rxCedWgqjL/7rm7/+P9Z/3pLMrSbzfmM+O7i 1G+evEslko70fMfXZbfO/Q6gzkt1LU+MA++sbn/whvgZCNJfiH8xEUqL2/UsXBUB0r1T lAmT8Co3MfBedzr53pCh+VOBdgYqobNkcDZ/MpH4B9VYjFYCDkdsnw3lFRL380tiTTto bepg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=bnloPjCNqMXt/4pwLudRlG/+uRuop2VlpB/XYKBzID8=; b=clnEVHFpDrDmySpkybR25QoSRW6rRKtoagp369kemPM0px53j5ptQtXV67Gf1CEqbS LE+vsE7fHHatOVnASw+ZOvSu+5JUqBo5FN1bucyJAkUN8Koer7xhE+dVLO8TTfE9vf76 dvDGMNCtkngGpeIQlIkuWXeWnZt524D8IZfLngU4yDbEKibqtoJJec3w/K0qv/MQ6G+t LM+er0+b6LivEMhoOiL2VwEFtJaeGK3OUnnxJLOGuq0YZ1brHh4daf0MMDi4FZ8DuZur Z1mGvaaxy0dvnZl+6qigYeYDB7NdPBzEtOEcEfBtZXKvq6UkJUhUm/SvoVDI8k0Q0pRI AFCQ== X-Gm-Message-State: AOAM532MlpJvuR7ZCscGxCqs93Dv7yFZKDm3OKvwIaRv81TUfbwoVA+b /FuzoFUFaySHbMdaas7HX9M= X-Google-Smtp-Source: ABdhPJw936E+3+Ak+ibL67TMe0Xtp0WTzyZAEve98J0RXbBz4dFgfLz+0c8cJUfoiQcMOa/vOGzUyA== X-Received: by 2002:a65:4785:: with SMTP id e5mr8060055pgs.0.1610637023962; Thu, 14 Jan 2021 07:10:23 -0800 (PST) Received: from i9-aorus-gtx1080.localdomain (144.168.56.201.16clouds.com. [144.168.56.201]) by smtp.gmail.com with ESMTPSA id w21sm5372051pfq.67.2021.01.14.07.10.07 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 14 Jan 2021 07:10:23 -0800 (PST) From: Bin Meng To: Alistair Francis , =?utf-8?q?Philippe_Mathieu-?= =?utf-8?q?Daud=C3=A9?= , Peter Maydell , Francisco Iglesias Subject: [PATCH 5/9] hw/block: m25p80: Support fast read for SST flashes Date: Thu, 14 Jan 2021 23:08:58 +0800 Message-Id: <20210114150902.11515-6-bmeng.cn@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210114150902.11515-1-bmeng.cn@gmail.com> References: <20210114150902.11515-1-bmeng.cn@gmail.com> MIME-Version: 1.0 Received-SPF: pass client-ip=2607:f8b0:4864:20::433; envelope-from=bmeng.cn@gmail.com; helo=mail-pf1-x433.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Kevin Wolf , Bin Meng , qemu-devel@nongnu.org, qemu-block@nongnu.org, Max Reitz Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" From: Bin Meng Per SST25VF016B datasheet [1], SST flash requires a dummy byte after the address bytes. Note only SPI mode is supported by SST flashes. [1] http://ww1.microchip.com/downloads/en/devicedoc/s71271_04.pdf Signed-off-by: Bin Meng --- hw/block/m25p80.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/hw/block/m25p80.c b/hw/block/m25p80.c index e1e5d5a76f..512af61ba5 100644 --- a/hw/block/m25p80.c +++ b/hw/block/m25p80.c @@ -928,6 +928,9 @@ static void decode_fast_read_cmd(Flash *s) s->needed_bytes = get_addr_length(s); switch (get_man(s)) { /* Dummy cycles - modeled with bytes writes */ + case MAN_SST: + s->needed_bytes += 1; + break; case MAN_WINBOND: switch (s->cmd_in_progress) { case FAST_READ: From patchwork Thu Jan 14 15:08:59 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Bin Meng X-Patchwork-Id: 12019813 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.5 required=3.0 tests=BAYES_00, DKIM_ADSP_CUSTOM_MED,DKIM_INVALID,DKIM_SIGNED,FREEMAIL_FORGED_FROMDOMAIN, FREEMAIL_FROM,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER, INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED, USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id A1D68C433DB for ; Thu, 14 Jan 2021 15:22:11 +0000 (UTC) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 39A1423B44 for ; Thu, 14 Jan 2021 15:22:11 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 39A1423B44 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Received: from localhost ([::1]:42914 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1l04Ru-0001X1-D4 for qemu-devel@archiver.kernel.org; Thu, 14 Jan 2021 10:22:10 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:47570) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1l04Gk-0006O1-3M; Thu, 14 Jan 2021 10:10:38 -0500 Received: from mail-pj1-x1034.google.com ([2607:f8b0:4864:20::1034]:39918) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1l04Ge-0004GC-Nl; Thu, 14 Jan 2021 10:10:37 -0500 Received: by mail-pj1-x1034.google.com with SMTP id u4so3346709pjn.4; Thu, 14 Jan 2021 07:10:31 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=PiPI+CgLlpFSv2u7mJkxDRuWofaYNb842QPJItTkQ38=; b=VtN1Hex8SLAWi0tzmh4xr7xl5JyM2k2/LJjWGfFuytPyc/o87flnfDgp7c3PnHaGFa 2ohTFqIgnRx60iiiH9J2ivZyAWnE8X2+btWMopgm0ZuUWzDQOB4lyN8f0dkMU0cM5QBR YnzosbadCdLaeOVUoJ0Tew5x7LI4QIRKpw9AQ8ewC7vMroR7hihZSClW+EoYnEkLi+8O Oes+19Q+BgbKaIxoPbvcOTHgdkDkyHhXjw6FmzevH53UOlrUvcp+156lgWUCL5clfSGk J4rAEzfy//l3zbLhm6UeljMSkOiwyDCvdMzzRRYExN5rQ4QcjZOGnzpzUxzocALNrjxk CpXw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=PiPI+CgLlpFSv2u7mJkxDRuWofaYNb842QPJItTkQ38=; b=UJXhOTtVKQHdKSESRwVTurQ5oy725yMKy+ZU7QK5r+xgKPoy1cdtMB3dddvgR6Oi9S tWc0kmJqTMtNNN+sDZCthT5g6GGHGy+Hf/iVp+5IgsE7FIM5x5xrj5m69HAKj+0j1MT5 CJ6D33TK2P62lMwrw2fzYzF8Wmpmq9d/3Tn1ty0A25uF9GUbfuVDvedIW/ptBghqXFfs TdG2WfjK17nYrvzpOmWJg8Sju4PKxjHsnJGic3IMiMqBOjbPV8HyIe0wn9A2ZMF5P5jn 5w2rFj1Q8EsIks3IHcm/c8xvqMt2YTSnqQnhNpPrbnDqgPsDhgQwRpo7bYtamvr8a+VW Pzzg== X-Gm-Message-State: AOAM5337Tb+sC/ub9+zPoOW/92xZDawuEmr+kK6mpXfhntniFRVUNp5D ysYrhZP4vUtZphar7s9BmlV8QjS3ZC4= X-Google-Smtp-Source: ABdhPJzJWqjRCX51uPGs37ALsVHRkmRBaeMow6KAZv2IU598Yh3H238v6RnHptF0z6lcY0tYD33e5A== X-Received: by 2002:a17:90a:eac3:: with SMTP id ev3mr5290708pjb.27.1610637030962; Thu, 14 Jan 2021 07:10:30 -0800 (PST) Received: from i9-aorus-gtx1080.localdomain (144.168.56.201.16clouds.com. [144.168.56.201]) by smtp.gmail.com with ESMTPSA id w21sm5372051pfq.67.2021.01.14.07.10.25 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 14 Jan 2021 07:10:30 -0800 (PST) From: Bin Meng To: Alistair Francis , =?utf-8?q?Philippe_Mathieu-?= =?utf-8?q?Daud=C3=A9?= , Peter Maydell , Francisco Iglesias Subject: [PATCH 6/9] hw/ssi: xilinx_spips: Fix generic fifo dummy cycle handling Date: Thu, 14 Jan 2021 23:08:59 +0800 Message-Id: <20210114150902.11515-7-bmeng.cn@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210114150902.11515-1-bmeng.cn@gmail.com> References: <20210114150902.11515-1-bmeng.cn@gmail.com> MIME-Version: 1.0 Received-SPF: pass client-ip=2607:f8b0:4864:20::1034; envelope-from=bmeng.cn@gmail.com; helo=mail-pj1-x1034.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Xuzhou Cheng , Bin Meng , qemu-devel@nongnu.org, qemu-arm@nongnu.org Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" From: Bin Meng The description of the genenic command fifo register says: When [receive, transmit, data_xfer] = [0,0,1], the [immediate_data] field represents the number of dummy cycle sent on the SPI interface. However we should not simply use the programmed value to determine how many times ssi_transfer() needs to be called to send the dummy bytes. ssi_transfer() is used to transfer a byte on the line, not a sigle bit. Previously the m25p80 flash model wronly implemented the dummy cycles for fast read command on some flashes. Now this mess is corrected and SPI flash controllers need to be updated to do the right thing. According to the example in the ZynqMP manual (ug1085, v2.2 [1]) we need to convert the number of dummy cycles to bytes according to the SPI mode being used, and transfer the bytes via ssi_transfer(). [1] https://www.xilinx.com/support/documentation/user_guides/ug1085-zynq-ultrascale-trm.pdf table 24‐22, an example of Generic FIFO Contents for Quad I/O Read Command (EBh) Fixes: c95997a39de6 ("xilinx_spips: Add support for the ZynqMP Generic QSPI") Signed-off-by: Xuzhou Cheng Signed-off-by: Bin Meng --- hw/ssi/xilinx_spips.c | 29 ++++++++++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/hw/ssi/xilinx_spips.c b/hw/ssi/xilinx_spips.c index a897034601..787de60f24 100644 --- a/hw/ssi/xilinx_spips.c +++ b/hw/ssi/xilinx_spips.c @@ -191,6 +191,10 @@ FIELD(GQSPI_GF_SNAPSHOT, EXPONENT, 9, 1) FIELD(GQSPI_GF_SNAPSHOT, DATA_XFER, 8, 1) FIELD(GQSPI_GF_SNAPSHOT, IMMEDIATE_DATA, 0, 8) +#define GQSPI_GF_MODE_SPI 1 +#define GQSPI_GF_MODE_DSPI 2 +#define GQSPI_GF_MODE_QSPI 3 + #define R_GQSPI_MOD_ID (0x1fc / 4) #define R_GQSPI_MOD_ID_RESET (0x10a0000) @@ -492,7 +496,30 @@ static void xlnx_zynqmp_qspips_flush_fifo_g(XlnxZynqMPQSPIPS *s) } s->regs[R_GQSPI_DATA_STS] = 1ul << imm; } else { - s->regs[R_GQSPI_DATA_STS] = imm; + /* + * When [receive, transmit, data_xfer] = [0,0,1], it represents + * the number of dummy cycle sent on the SPI interface. We need + * to convert the number of dummy cycles to bytes according to + * the SPI mode being used. + * + * Ref: ug1085 v2.2 (December 2020) table 24‐22, an example of + * Generic FIFO Contents for Quad I/O Read Command (EBh) + */ + if (!ARRAY_FIELD_EX32(s->regs, GQSPI_GF_SNAPSHOT, TRANSMIT) && + !ARRAY_FIELD_EX32(s->regs, GQSPI_GF_SNAPSHOT, RECIEVE)) { + uint8_t spi_mode = ARRAY_FIELD_EX32(s->regs, GQSPI_GF_SNAPSHOT, SPI_MODE); + if (spi_mode == GQSPI_GF_MODE_QSPI) { + s->regs[R_GQSPI_DATA_STS] = ROUND_UP(imm * 4, 8) / 8; + } else if (spi_mode == GQSPI_GF_MODE_DSPI) { + s->regs[R_GQSPI_DATA_STS] = ROUND_UP(imm * 2, 8) / 8; + } else if (spi_mode == GQSPI_GF_MODE_SPI) { + s->regs[R_GQSPI_DATA_STS] = ROUND_UP(imm * 1, 8) / 8; + } else { + qemu_log_mask(LOG_GUEST_ERROR, "Unknown SPI MODE: 0x%x ", spi_mode); + } + } else { + s->regs[R_GQSPI_DATA_STS] = imm; + } } } /* Zero length transfer check */ From patchwork Thu Jan 14 15:09:00 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bin Meng X-Patchwork-Id: 12019785 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.5 required=3.0 tests=BAYES_00, DKIM_ADSP_CUSTOM_MED,DKIM_INVALID,DKIM_SIGNED,FREEMAIL_FORGED_FROMDOMAIN, FREEMAIL_FROM,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER, INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED, USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 70E33C433DB for ; Thu, 14 Jan 2021 15:16:19 +0000 (UTC) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id DF81C23A69 for ; Thu, 14 Jan 2021 15:16:16 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org DF81C23A69 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Received: from localhost ([::1]:57368 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1l04MB-0003hw-S7 for qemu-devel@archiver.kernel.org; Thu, 14 Jan 2021 10:16:15 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:47582) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1l04Gl-0006SH-SQ; Thu, 14 Jan 2021 10:10:39 -0500 Received: from mail-pl1-x62e.google.com ([2607:f8b0:4864:20::62e]:40976) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1l04Gk-0004IH-Bp; Thu, 14 Jan 2021 10:10:39 -0500 Received: by mail-pl1-x62e.google.com with SMTP id y8so3036730plp.8; Thu, 14 Jan 2021 07:10:37 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=aqcTZr+UBuBY93y+f17AGADvFaFWY8Chw5yZcKTF3D0=; b=JKU55CeR1npS7xr1eJWnr1hhVThKFM4Ijo7B2CngTgj+MxyW4bqwMrAWCrbvTJX8An meQvHRssF3m6S3nymQzIjfDn29VTbhNZMyZ1zKV1t12jAH11YEOS6kjGbhgeiGTd9VWo tsMM479jNXSFDwuBTjUahXl/STQ245c3RHr7rVnTtOetR40zIwoaBoD8raWqZElQ0Uk2 MMM/CFA6OJ2q3WZdJyQswAcHz8p7aTclmkyMWGDV7sgE0fDO5oPvmsDBFSb7F1xqDXCe lPvuSlYJexAFjCv4z26m7q0DGtiKjZM+IevSaCJvuo9/NMTuycLICy/vqN58swB3IOjj hdmw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=aqcTZr+UBuBY93y+f17AGADvFaFWY8Chw5yZcKTF3D0=; b=hpNhRH0HZHumbrQ6ZEgve6DPAoHpvpbvLlOX/Kr+g6ZKUYSQBx4GNR7FecXWvOFgjC FpuC/lQF8VUqOXn+dc2dUiEpsbKtQM7BmfCw5ZIR8s8qJXjIjVXDfQjaa2F5sCCglBzw i3by5DyATqmhtmc8X/+9Qek9DDixC7M7S3w3b/X+Ad/QS2U1NyAD+dQABezUPOuYn4Mi Nk4a6LS3jNMPJTRzllK3Hnuyr6cPAZlE41tBU/2lN+f/lSBK/7qRHknG8uhCp7OvxS21 C5cURPks6C1p/XfHBrhiJjHD5DtPNwpjfhawTOj9FFe18VCZYrOa0+15rsHYEpQj2kKa 2FcQ== X-Gm-Message-State: AOAM53271X7Uj6c3RJGLgX5bXFx8onwi/3VbUSb3SGM+pb7YLA3OI4EI cG8RyEdXlkK7tsP1oDaYhqI= X-Google-Smtp-Source: ABdhPJxrZoAP9IB96M45BnxWp+3u/lnoA71AeQeoF8iWQb1yqrepe2PTTae+sFYFH3i44WBbJk3T2g== X-Received: by 2002:a17:902:9049:b029:da:efd6:4c12 with SMTP id w9-20020a1709029049b02900daefd64c12mr7862715plz.12.1610637036475; Thu, 14 Jan 2021 07:10:36 -0800 (PST) Received: from i9-aorus-gtx1080.localdomain (144.168.56.201.16clouds.com. [144.168.56.201]) by smtp.gmail.com with ESMTPSA id w21sm5372051pfq.67.2021.01.14.07.10.31 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 14 Jan 2021 07:10:35 -0800 (PST) From: Bin Meng To: Alistair Francis , =?utf-8?q?Philippe_Mathieu-?= =?utf-8?q?Daud=C3=A9?= , Peter Maydell , Francisco Iglesias Subject: [PATCH 7/9] Revert "aspeed/smc: Fix number of dummy cycles for FAST_READ_4 command" Date: Thu, 14 Jan 2021 23:09:00 +0800 Message-Id: <20210114150902.11515-8-bmeng.cn@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210114150902.11515-1-bmeng.cn@gmail.com> References: <20210114150902.11515-1-bmeng.cn@gmail.com> MIME-Version: 1.0 Received-SPF: pass client-ip=2607:f8b0:4864:20::62e; envelope-from=bmeng.cn@gmail.com; helo=mail-pl1-x62e.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Andrew Jeffery , Bin Meng , qemu-devel@nongnu.org, qemu-arm@nongnu.org, =?utf-8?q?C=C3=A9dric_Le_Goater?= , Joel Stanley Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" From: Bin Meng This reverts commit 7faf6f1790dddf9f3acf6ddd95f7bbc1b4a755d0. The incorrect implementation of dummy cycles in m25p80 model is now corrected. Revert this commit. Signed-off-by: Bin Meng --- hw/ssi/aspeed_smc.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hw/ssi/aspeed_smc.c b/hw/ssi/aspeed_smc.c index 16addee4dc..1e78b5232f 100644 --- a/hw/ssi/aspeed_smc.c +++ b/hw/ssi/aspeed_smc.c @@ -802,11 +802,11 @@ static int aspeed_smc_num_dummies(uint8_t command) case FAST_READ: case DOR: case QOR: - case FAST_READ_4: case DOR_4: case QOR_4: return 1; case DIOR: + case FAST_READ_4: case DIOR_4: return 2; case QIOR: From patchwork Thu Jan 14 15:09:01 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bin Meng X-Patchwork-Id: 12019809 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.6 required=3.0 tests=BAYES_00, DKIM_ADSP_CUSTOM_MED,DKIM_INVALID,DKIM_SIGNED,FREEMAIL_FORGED_FROMDOMAIN, FREEMAIL_FROM,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER, INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 1FA1AC433DB for ; Thu, 14 Jan 2021 15:20:13 +0000 (UTC) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 5C27423B46 for ; Thu, 14 Jan 2021 15:20:12 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 5C27423B46 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Received: from localhost ([::1]:37482 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1l04Pz-0007Xk-7k for qemu-devel@archiver.kernel.org; Thu, 14 Jan 2021 10:20:11 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:47618) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1l04Gs-0006fH-Nz; Thu, 14 Jan 2021 10:10:47 -0500 Received: from mail-pj1-x1034.google.com ([2607:f8b0:4864:20::1034]:54333) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1l04Gp-0004LW-Dg; Thu, 14 Jan 2021 10:10:46 -0500 Received: by mail-pj1-x1034.google.com with SMTP id cq1so3230805pjb.4; Thu, 14 Jan 2021 07:10:42 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=gDI3Lg8zX7Mk9E+XiKTF8U/FUN1ufj38Nn84DY7D9Rg=; b=LvmPeXREe/DoGS3uPQpILVOB9giyOrwfc3z0kqGgCfcOOm/Z6ZJTpowkND+VrjA5r2 Ay4xDha+dF9O/CS7Bc9u/KTpMyzyZhMVBFvwKvyfg1NHh/yTv2QPX/441BN5vjDnnZFq 5t12+wmy1Qz+ThL71jwLR6Ut1gVUGCnIYxFFdkSoPQqyDlFiBQNG0Dyt9OdwgJAHrPuc C94S5QL1mjb9SnoGk8fom/WDi9uQdKZeOlByhlihl2WrK6p9mlsg94YJal/JEy1OGhar rsm1LlZuepUPGynuidFJkiqAvlnREuDeuyrwhhIN4q0i6CNMzO7S/fbgK0HeLHxi976e OmtQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=gDI3Lg8zX7Mk9E+XiKTF8U/FUN1ufj38Nn84DY7D9Rg=; b=M0DEdLOznvyJJD/cqqunXWGz/N/GwYBb4ko5UoG1AMP/1e52oEpSOQTiklwHvFMJEQ x0x02aAsNo1wAXxxVfhCg912R6kEgT1h4Ecv/P3GV7NCB4Mb662CJn2S0yJ3BVlP0NHp zL9Mui+pH4Wwg4Yuknq7O0e0ExNjTOYUkBS79cW921bLl7qpyEZDmDJanY01O/MVROpm 5Zi4I7hgRa1eHEcGVmOxYcg769N9jeHPllLlAGXlD1QABKPYrXr9nx7BW5YmR3me4g9U /rYaAKA3jvatrmlsnuR0qwrktR0gSwzQhjcF474IsBwDcJWKbb6691zlMH3Kblm5oZey ZS9g== X-Gm-Message-State: AOAM532eKcGQfUo+gZTFbRqIvnCWhFec1FHvIvZwuKCeT5UuEQYwnpY4 UBWTsXjkOhQh3VEFQzha0mM= X-Google-Smtp-Source: ABdhPJwd8s1rQrbFIlXUOp+vVfbrBAxw6Rhp0DiXv+myD4YnzixKT6j3/Ym16AkbKV5y14V039QKRQ== X-Received: by 2002:a17:90a:5914:: with SMTP id k20mr5336869pji.199.1610637041843; Thu, 14 Jan 2021 07:10:41 -0800 (PST) Received: from i9-aorus-gtx1080.localdomain (144.168.56.201.16clouds.com. [144.168.56.201]) by smtp.gmail.com with ESMTPSA id w21sm5372051pfq.67.2021.01.14.07.10.37 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 14 Jan 2021 07:10:41 -0800 (PST) From: Bin Meng To: Alistair Francis , =?utf-8?q?Philippe_Mathieu-?= =?utf-8?q?Daud=C3=A9?= , Peter Maydell , Francisco Iglesias Subject: [PATCH 8/9] Revert "aspeed/smc: snoop SPI transfers to fake dummy cycles" Date: Thu, 14 Jan 2021 23:09:01 +0800 Message-Id: <20210114150902.11515-9-bmeng.cn@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210114150902.11515-1-bmeng.cn@gmail.com> References: <20210114150902.11515-1-bmeng.cn@gmail.com> MIME-Version: 1.0 Received-SPF: pass client-ip=2607:f8b0:4864:20::1034; envelope-from=bmeng.cn@gmail.com; helo=mail-pj1-x1034.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Andrew Jeffery , Bin Meng , qemu-devel@nongnu.org, qemu-arm@nongnu.org, =?utf-8?q?C=C3=A9dric_Le_Goater?= , Joel Stanley Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" From: Bin Meng This reverts commit f95c4bffdc4c53b29f89762cab4adc5a43f95daf. The incorrect implementation of dummy cycles in m25p80 model is now corrected. Revert this commit. Signed-off-by: Bin Meng --- include/hw/ssi/aspeed_smc.h | 3 - hw/ssi/aspeed_smc.c | 116 +----------------------------------- 2 files changed, 2 insertions(+), 117 deletions(-) diff --git a/include/hw/ssi/aspeed_smc.h b/include/hw/ssi/aspeed_smc.h index 16c03fe64f..46f3abf2e7 100644 --- a/include/hw/ssi/aspeed_smc.h +++ b/include/hw/ssi/aspeed_smc.h @@ -111,9 +111,6 @@ struct AspeedSMCState { AddressSpace dram_as; AspeedSMCFlash *flashes; - - uint8_t snoop_index; - uint8_t snoop_dummies; }; #endif /* ASPEED_SMC_H */ diff --git a/hw/ssi/aspeed_smc.c b/hw/ssi/aspeed_smc.c index 1e78b5232f..0df5d91d19 100644 --- a/hw/ssi/aspeed_smc.c +++ b/hw/ssi/aspeed_smc.c @@ -187,9 +187,6 @@ /* Flash opcodes. */ #define SPI_OP_READ 0x03 /* Read data bytes (low frequency) */ -#define SNOOP_OFF 0xFF -#define SNOOP_START 0x0 - /* * Default segments mapping addresses and size for each peripheral per * controller. These can be changed when board is initialized with the @@ -771,104 +768,6 @@ static uint64_t aspeed_smc_flash_read(void *opaque, hwaddr addr, unsigned size) return ret; } -/* - * TODO (clg@kaod.org): stolen from xilinx_spips.c. Should move to a - * common include header. - */ -typedef enum { - READ = 0x3, READ_4 = 0x13, - FAST_READ = 0xb, FAST_READ_4 = 0x0c, - DOR = 0x3b, DOR_4 = 0x3c, - QOR = 0x6b, QOR_4 = 0x6c, - DIOR = 0xbb, DIOR_4 = 0xbc, - QIOR = 0xeb, QIOR_4 = 0xec, - - PP = 0x2, PP_4 = 0x12, - DPP = 0xa2, - QPP = 0x32, QPP_4 = 0x34, -} FlashCMD; - -static int aspeed_smc_num_dummies(uint8_t command) -{ - switch (command) { /* check for dummies */ - case READ: /* no dummy bytes/cycles */ - case PP: - case DPP: - case QPP: - case READ_4: - case PP_4: - case QPP_4: - return 0; - case FAST_READ: - case DOR: - case QOR: - case DOR_4: - case QOR_4: - return 1; - case DIOR: - case FAST_READ_4: - case DIOR_4: - return 2; - case QIOR: - case QIOR_4: - return 4; - default: - return -1; - } -} - -static bool aspeed_smc_do_snoop(AspeedSMCFlash *fl, uint64_t data, - unsigned size) -{ - AspeedSMCState *s = fl->controller; - uint8_t addr_width = aspeed_smc_flash_is_4byte(fl) ? 4 : 3; - - trace_aspeed_smc_do_snoop(fl->id, s->snoop_index, s->snoop_dummies, - (uint8_t) data & 0xff); - - if (s->snoop_index == SNOOP_OFF) { - return false; /* Do nothing */ - - } else if (s->snoop_index == SNOOP_START) { - uint8_t cmd = data & 0xff; - int ndummies = aspeed_smc_num_dummies(cmd); - - /* - * No dummy cycles are expected with the current command. Turn - * off snooping and let the transfer proceed normally. - */ - if (ndummies <= 0) { - s->snoop_index = SNOOP_OFF; - return false; - } - - s->snoop_dummies = ndummies * 8; - - } else if (s->snoop_index >= addr_width + 1) { - - /* The SPI transfer has reached the dummy cycles sequence */ - for (; s->snoop_dummies; s->snoop_dummies--) { - ssi_transfer(s->spi, s->regs[R_DUMMY_DATA] & 0xff); - } - - /* If no more dummy cycles are expected, turn off snooping */ - if (!s->snoop_dummies) { - s->snoop_index = SNOOP_OFF; - } else { - s->snoop_index += size; - } - - /* - * Dummy cycles have been faked already. Ignore the current - * SPI transfer - */ - return true; - } - - s->snoop_index += size; - return false; -} - static void aspeed_smc_flash_write(void *opaque, hwaddr addr, uint64_t data, unsigned size) { @@ -887,10 +786,6 @@ static void aspeed_smc_flash_write(void *opaque, hwaddr addr, uint64_t data, switch (aspeed_smc_flash_mode(fl)) { case CTRL_USERMODE: - if (aspeed_smc_do_snoop(fl, data, size)) { - break; - } - for (i = 0; i < size; i++) { ssi_transfer(s->spi, (data >> (8 * i)) & 0xff); } @@ -937,8 +832,6 @@ static void aspeed_smc_flash_update_ctrl(AspeedSMCFlash *fl, uint32_t value) s->regs[s->r_ctrl0 + fl->id] = value; - s->snoop_index = unselect ? SNOOP_OFF : SNOOP_START; - aspeed_smc_flash_do_select(fl, unselect); } @@ -981,9 +874,6 @@ static void aspeed_smc_reset(DeviceState *d) if (s->ctrl->segments == aspeed_segments_fmc) { s->regs[s->r_conf] |= (CONF_FLASH_TYPE_SPI << CONF_FLASH_TYPE0); } - - s->snoop_index = SNOOP_OFF; - s->snoop_dummies = 0; } static uint64_t aspeed_smc_read(void *opaque, hwaddr addr, unsigned int size) @@ -1419,12 +1309,10 @@ static void aspeed_smc_realize(DeviceState *dev, Error **errp) static const VMStateDescription vmstate_aspeed_smc = { .name = "aspeed.smc", - .version_id = 2, - .minimum_version_id = 2, + .version_id = 1, + .minimum_version_id = 1, .fields = (VMStateField[]) { VMSTATE_UINT32_ARRAY(regs, AspeedSMCState, ASPEED_SMC_R_MAX), - VMSTATE_UINT8(snoop_index, AspeedSMCState), - VMSTATE_UINT8(snoop_dummies, AspeedSMCState), VMSTATE_END_OF_LIST() } }; From patchwork Thu Jan 14 15:09:02 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bin Meng X-Patchwork-Id: 12019885 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.5 required=3.0 tests=BAYES_00, DKIM_ADSP_CUSTOM_MED,DKIM_INVALID,DKIM_SIGNED,FREEMAIL_FORGED_FROMDOMAIN, FREEMAIL_FROM,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER, INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED, USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 38D51C433E0 for ; Thu, 14 Jan 2021 15:23:11 +0000 (UTC) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id E51F523B28 for ; Thu, 14 Jan 2021 15:23:10 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org E51F523B28 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Received: from localhost ([::1]:46240 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1l04Ss-0002t5-2j for qemu-devel@archiver.kernel.org; Thu, 14 Jan 2021 10:23:10 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:47702) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1l04H1-0006lw-Bf; Thu, 14 Jan 2021 10:10:55 -0500 Received: from mail-pl1-x634.google.com ([2607:f8b0:4864:20::634]:40982) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1l04Gy-0004Pl-Rh; Thu, 14 Jan 2021 10:10:55 -0500 Received: by mail-pl1-x634.google.com with SMTP id y8so3037022plp.8; Thu, 14 Jan 2021 07:10:49 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=nT1NO2oOvTRXnT4qmsBpHS5imQeak8IMZL/sVV5o5Vs=; b=LLUhAHpDznGtgVX4SwtAGTx6bIAskvxzSVPIaWOkK++VTLzFSiZFm/OjRDiPiQQbY3 rVf3iUKibyMo4IOQ8A5BoL1/UJoayktKfTcVoephxSxQO9Og1KoeQl86ZMY3J8MxpD96 wmRTv9DPc2RHJbVyefvmnKYOJq/IH6tVWD8pkC8fmNBOrH5Ky9ZS4qS00ZXOQqlLWZaa pqNAFwd7yAW1H5s8VO4vQHbrT1oVDryoXPUkQyWvUmTQHp7rTCnfYZ3nS6M7L3LCkB0A RyKgSV9oUq5lmW0weH43Gdn8RXY6i80T9jxPwgkJ6cgLdMslzukVNxkI858YT5awKjJS xx5g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=nT1NO2oOvTRXnT4qmsBpHS5imQeak8IMZL/sVV5o5Vs=; b=oE6hSv+OzO6/KqP//kL1kPCf3UIxVZf+57Y0xhmW0vFsD22xDf3uNkF2+gsr8MC7BC mRBWYPB0AZljhLlYTExUTaJ4khovgCiDGXtgbCy1B+XgFoZq8WFcN9jSl/LdQmbSMGbH MqCujo1KPwr0lZI4NmFIQwKbH/oPsVy17RMkAEo+KkQigKlpWU3P/6pVhZ/S45Ejgb+u alDL81Uu77zLM31JPRl+0vBhlwUOplXjpqfvR2XV9aRKKM7E78QZUTsjUiXm7+m5ioQD v77QmC1WV89d4vYIGz6HwG5En6Gbt/0P1OQjRgE0aYO4SnYtC0waPQo4LBb7jl2GaLNZ Jrlw== X-Gm-Message-State: AOAM531vQU4X1ZpXYc9vUcH2IIacWvQUJeQyhVC4DJmfTDT+Vy25kjyr gsrroGDrk6oRJk5MDOzi0fyAaNHU1MQ= X-Google-Smtp-Source: ABdhPJws17aYgRAZ8cQgSVDAQUn8sw7HD1ZSvPycsplWpThXUQF8EQPu1JB9eTQ1zlO7iSZ3/zs8NA== X-Received: by 2002:a17:90a:6401:: with SMTP id g1mr5273691pjj.165.1610637048889; Thu, 14 Jan 2021 07:10:48 -0800 (PST) Received: from i9-aorus-gtx1080.localdomain (144.168.56.201.16clouds.com. [144.168.56.201]) by smtp.gmail.com with ESMTPSA id w21sm5372051pfq.67.2021.01.14.07.10.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 14 Jan 2021 07:10:48 -0800 (PST) From: Bin Meng To: Alistair Francis , =?utf-8?q?Philippe_Mathieu-?= =?utf-8?q?Daud=C3=A9?= , Peter Maydell , Francisco Iglesias Subject: [PATCH 9/9] hw/ssi: npcm7xx_fiu: Correct the dummy cycle emulation logic Date: Thu, 14 Jan 2021 23:09:02 +0800 Message-Id: <20210114150902.11515-10-bmeng.cn@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210114150902.11515-1-bmeng.cn@gmail.com> References: <20210114150902.11515-1-bmeng.cn@gmail.com> MIME-Version: 1.0 Received-SPF: pass client-ip=2607:f8b0:4864:20::634; envelope-from=bmeng.cn@gmail.com; helo=mail-pl1-x634.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Tyrone Ting , Bin Meng , Havard Skinnemoen , qemu-arm@nongnu.org, qemu-devel@nongnu.org Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" From: Bin Meng I believe send_dummy_bits() should also be fixed, but I really don't know how based on my pure read/guess of the codes since there is no public datasheet available for this NPCM7xx SoC. Signed-off-by: Bin Meng --- hw/ssi/npcm7xx_fiu.c | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/hw/ssi/npcm7xx_fiu.c b/hw/ssi/npcm7xx_fiu.c index 5040132b07..e76fb5ad9f 100644 --- a/hw/ssi/npcm7xx_fiu.c +++ b/hw/ssi/npcm7xx_fiu.c @@ -150,7 +150,7 @@ static uint64_t npcm7xx_fiu_flash_read(void *opaque, hwaddr addr, NPCM7xxFIUState *fiu = f->fiu; uint64_t value = 0; uint32_t drd_cfg; - int dummy_cycles; + int dummy_bytes; int i; if (fiu->active_cs != -1) { @@ -180,10 +180,8 @@ static uint64_t npcm7xx_fiu_flash_read(void *opaque, hwaddr addr, break; } - /* Flash chip model expects one transfer per dummy bit, not byte */ - dummy_cycles = - (FIU_DRD_CFG_DBW(drd_cfg) * 8) >> FIU_DRD_CFG_ACCTYPE(drd_cfg); - for (i = 0; i < dummy_cycles; i++) { + dummy_bytes = FIU_DRD_CFG_DBW(drd_cfg) >> FIU_DRD_CFG_ACCTYPE(drd_cfg); + for (i = 0; i < dummy_bytes; i++) { ssi_transfer(fiu->spi, 0); }