Received: by 2002:ac0:a5a6:0:0:0:0:0 with SMTP id m35-v6csp488395imm; Fri, 28 Sep 2018 01:45:25 -0700 (PDT) X-Google-Smtp-Source: ACcGV62uqXN55Pty2dqfwmFIBNcfhdJIMjxoKWntkO9YDgNvbszxGI5ED7WHDnUgfP0DToNx2zsv X-Received: by 2002:a17:902:5590:: with SMTP id g16-v6mr15146005pli.46.1538124325661; Fri, 28 Sep 2018 01:45:25 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1538124325; cv=none; d=google.com; s=arc-20160816; b=TLdq5HR2ndu+pe33WwzG5VNdA+rKX6UrUXTKz0WMNAr4Pqcs3+Vu/+8cH8xDL4iu71 oEUcObUfsUy/XkdGi8/OxOQmYGRGgXLg3mJQPsI4+58TTRopvdtvyXjmfBdYh6/Yme92 ZxOkzAy/SSDuRgleFxHms4B1QBu/H3Ip42cBzGoFspdujfRhPgHKVav3irqWqLD0jR2k tyPMAu/uuJmTaHFHFB5ZBGEgSa3UVqrP6VLJhR+vKXAjaxBo0vMvWT0srxFyPI/fPj9N p7Nr3Y/gWOUO/lZZ3kSAoJLOzjX2Ad8L6ir8c28YORctxwOMV+3CsKINfaRvIXuuiQSe l6cw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:reply-to:references:in-reply-to :message-id:date:subject:cc:to:from; bh=2/+ZNLd1GQzOZJ0V59LJ0lNOfzSmbZuey268zuA9LFo=; b=FEUsPcIN3AoncdRL+vE82BqzNZaLheuMqBpbTNIPdRF4H77xxE4FnVB9AjK7sNkjWg uFOu2JofNtzqk+UwoT5FkPi4gT70WaLgpgBEFVY5osVyzgm+VUlvLO5l+vTznXxSI/Ku 4r3FwHOP/BIQk4mSRSlp6hSdKQaS8VDB6AjXCgk27WuyPKag8Pifq+oUCuEeM9X31K6J 3oU7kot/RWd/Hj0s10Y34MpT7Rpzgfhd3XRVzuO+l32IwyCv0J2bisgDEw/2PZ50lQSn ecalq3hEu5cAPtkwjTlmGmX0o2pP2KAU+6PbA2Qf7mhzVHIOp+4fB61ual80NdwCMioM ++Tg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=nxp.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id d66-v6si321815pfc.250.2018.09.28.01.45.09; Fri, 28 Sep 2018 01:45:25 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=nxp.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729329AbeI1PGY (ORCPT + 99 others); Fri, 28 Sep 2018 11:06:24 -0400 Received: from inva020.nxp.com ([92.121.34.13]:50866 "EHLO inva020.nxp.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729255AbeI1PGY (ORCPT ); Fri, 28 Sep 2018 11:06:24 -0400 Received: from inva020.nxp.com (localhost [127.0.0.1]) by inva020.eu-rdc02.nxp.com (Postfix) with ESMTP id 7A2341A0070; Fri, 28 Sep 2018 10:43:41 +0200 (CEST) Received: from inva024.eu-rdc02.nxp.com (inva024.eu-rdc02.nxp.com [134.27.226.22]) by inva020.eu-rdc02.nxp.com (Postfix) with ESMTP id 6DC691A006D; Fri, 28 Sep 2018 10:43:41 +0200 (CEST) Received: from fsr-fed2164-101.ea.freescale.net (fsr-fed2164-101.ea.freescale.net [10.171.82.91]) by inva024.eu-rdc02.nxp.com (Postfix) with ESMTP id 09A852039E; Fri, 28 Sep 2018 10:43:41 +0200 (CEST) From: Madalin Bucur To: leoyang.li@nxp.com Cc: roy.pledge@nxp.com, claudiu.manoil@nxp.com, catalin.marinas@arm.com, oss@buserror.net, linux-arm-kernel@lists.infradead.org, linuxppc-dev@lists.ozlabs.org, linux-kernel@vger.kernel.org, Madalin Bucur Subject: [PATCH v2 4/5] soc/fsl/qbman: Use last response to determine valid bit Date: Fri, 28 Sep 2018 11:43:23 +0300 Message-Id: <1538124204-31406-5-git-send-email-madalin.bucur@nxp.com> X-Mailer: git-send-email 2.1.0 In-Reply-To: <1538124204-31406-1-git-send-email-madalin.bucur@nxp.com> References: <1538124204-31406-1-git-send-email-madalin.bucur@nxp.com> Reply-to: madalin.bucur@nxp.com X-Virus-Scanned: ClamAV using ClamSMTP Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Roy Pledge Use the last valid response when determining what valid bit to use next for management commands. This is needed in the case that the portal was previously used by other software like a bootloader or if the kernel is restarted without a hardware reset. Signed-off-by: Roy Pledge Signed-off-by: Madalin Bucur --- drivers/soc/fsl/qbman/qman.c | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/drivers/soc/fsl/qbman/qman.c b/drivers/soc/fsl/qbman/qman.c index 0ffe7a1d0eae..99d0f87889b8 100644 --- a/drivers/soc/fsl/qbman/qman.c +++ b/drivers/soc/fsl/qbman/qman.c @@ -850,12 +850,24 @@ static inline void qm_mr_set_ithresh(struct qm_portal *portal, u8 ithresh) static inline int qm_mc_init(struct qm_portal *portal) { + u8 rr0, rr1; struct qm_mc *mc = &portal->mc; mc->cr = portal->addr.ce + QM_CL_CR; mc->rr = portal->addr.ce + QM_CL_RR0; - mc->rridx = (mc->cr->_ncw_verb & QM_MCC_VERB_VBIT) - ? 0 : 1; + /* + * The expected valid bit polarity for the next CR command is 0 + * if RR1 contains a valid response, and is 1 if RR0 contains a + * valid response. If both RR contain all 0, this indicates either + * that no command has been executed since reset (in which case the + * expected valid bit polarity is 1) + */ + rr0 = mc->rr->verb; + rr1 = (mc->rr+1)->verb; + if ((rr0 == 0 && rr1 == 0) || rr0 != 0) + mc->rridx = 1; + else + mc->rridx = 0; mc->vbit = mc->rridx ? QM_MCC_VERB_VBIT : 0; #ifdef CONFIG_FSL_DPAA_CHECKING mc->state = qman_mc_idle; -- 2.1.0