Received: by 2002:a05:7412:251c:b0:e2:908c:2ebd with SMTP id w28csp1077498rda; Mon, 23 Oct 2023 01:27:20 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFUbocZEIyHpW/Y4LAY1aDFPdHueBEDkKIYjCNPxy870CeLRLOYVR+02cEkAtdkstFTJtZR X-Received: by 2002:a17:903:41cc:b0:1c7:3526:dfcd with SMTP id u12-20020a17090341cc00b001c73526dfcdmr7120554ple.52.1698049639959; Mon, 23 Oct 2023 01:27:19 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1698049639; cv=none; d=google.com; s=arc-20160816; b=r9cBHvi+BwGXB6AwW0+Z/9BSl0VqVyFTs0xDbQ9v8ZuzioiNF0THV4KNEyZKFtt6Hn Yl2/DP5goOpHaclITONB9HCKhbx0By0RP8v+5oMapBrfqyyI2V1dfkkI7Er3dYya4e6+ bq7XUl2BL5DOefJBZCS/FZXwC1URMoax98LqTNphA9JpesjvkhPN+nhx6zEkXH1HDSdM cJE00YFbdEC6EpFn7QCFOEJ2ecvdC/kzuNqTAEFRUhWWpY0SH3wjweZ0iiLECyVbe9GI n+wM7csQpSlUxe4DYBFyyjbrz+OprBBEXzJTiZh+oiJxPYOQTgUegFkvbhuMtvj4hEwD cYYw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:cc:to:subject :message-id:date:from:in-reply-to:references:mime-version :dkim-signature; bh=ClzLCPEn1/RDjIo1E6Nnql8+vBKZIk7KnsLu7dKI+DE=; fh=XPk3GA2OCe5rfpnxI6HwWAKN3TAv5YXRptmE5irKh6o=; b=m+U+uqCYuhkXmtiSWJbyrck2GghJjpG6u6M4+dhijYCAp1ndLjig8eNLRAmrEozXUy WbQogfcUgv+rhNbEfZ2qWvfHTaVXHij5W5ngKAyHFwDp5qQiAfGjFdYlGNAyjkabsaZG Ym1GuQfd3hXuRaEv2fxU++XfdJ5WOl/fnmXTepqsOzdP4FJROvyhoCSkQ9h1e6VxUoh9 mRgCb6D75TxHsqOONMy43zohyVXICUsZcQ2ynxgR3BBnkyiqOOyqqSeQ/UpNL1PNtdfO AH9hm/8QgWj+X+9e1pH+GloXbvH0yaGU2DJwd5DYMXzv492WO2pipB5/xIDVlvWNwh23 BfKA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@chromium.org header.s=google header.b=Ta9S+tUF; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.38 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=chromium.org Return-Path: Received: from fry.vger.email (fry.vger.email. [23.128.96.38]) by mx.google.com with ESMTPS id o15-20020a170902d4cf00b001b9dda4e1e7si5879500plg.154.2023.10.23.01.27.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 23 Oct 2023 01:27:19 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.38 as permitted sender) client-ip=23.128.96.38; Authentication-Results: mx.google.com; dkim=pass header.i=@chromium.org header.s=google header.b=Ta9S+tUF; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.38 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=chromium.org Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by fry.vger.email (Postfix) with ESMTP id 6182E8097290; Mon, 23 Oct 2023 01:27:17 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at fry.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230129AbjJWI1C (ORCPT + 99 others); Mon, 23 Oct 2023 04:27:02 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:37424 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229628AbjJWI1B (ORCPT ); Mon, 23 Oct 2023 04:27:01 -0400 Received: from mail-vs1-xe31.google.com (mail-vs1-xe31.google.com [IPv6:2607:f8b0:4864:20::e31]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id ACE11DA for ; Mon, 23 Oct 2023 01:26:58 -0700 (PDT) Received: by mail-vs1-xe31.google.com with SMTP id ada2fe7eead31-457c2d81f7fso940942137.3 for ; Mon, 23 Oct 2023 01:26:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; t=1698049617; x=1698654417; darn=vger.kernel.org; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=ClzLCPEn1/RDjIo1E6Nnql8+vBKZIk7KnsLu7dKI+DE=; b=Ta9S+tUFbkO1pznQTj1ZPi/uXlbKQloH3SphjUnFguBmJsJrPru0UPt+9VGRw23wsq 3e6dn3LeLS+VuSV7FTIvqhRGE9W9df1ZOUtqlvyeQZSg1GTh8gQ74U/X+VfsJGIXDLtF sksVWVl69ANkr+XwK7EtGglf0ivZIsdd2KokE= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1698049617; x=1698654417; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=ClzLCPEn1/RDjIo1E6Nnql8+vBKZIk7KnsLu7dKI+DE=; b=d+W07ZyvOOJ8Vsjf4BPe4rkhZOCBv5S1eNoh5eDJJGJinPeUPulFP80tJxOEl4vCa/ E5fdNR0YIUDJAnIx/PV/K0yOKupCCohdfNNVJoaI39UMRi+rNuG3iKG0vwEsUlDZxyZB 9zUg1VjdhsKZ1j2ETCh355EgFBbLNedrRaMUYpW1cY/8tk8fv7KiMcD1cZwy0psoCk3C 5wfSCs5Zm3jbAgMBsR3j2Zls4AU1vyXedQD9ambEhUb00ABVEfnyHJUkGh4HAOUMUM/N UmGMjF9BFbrrvvLokzS1uhjrPJKCceD9TnKRuHWXqWbv4h/xX1kit0H62MwJcClC9A3v /elQ== X-Gm-Message-State: AOJu0YyoJhWfylHtvvhMWTqH7i/Fkg3C/5oCX2S8RYqxBeku4NHeOEGy t3hYOl8Lw5ORxb9FFvQpwagL6pRKTM9rPDdBZNo= X-Received: by 2002:a67:c118:0:b0:455:e14e:79f6 with SMTP id d24-20020a67c118000000b00455e14e79f6mr8097673vsj.7.1698049617646; Mon, 23 Oct 2023 01:26:57 -0700 (PDT) Received: from mail-ua1-f44.google.com (mail-ua1-f44.google.com. [209.85.222.44]) by smtp.gmail.com with ESMTPSA id w13-20020a67ffcd000000b00450fc8d2c76sm787107vsq.28.2023.10.23.01.26.56 for (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 23 Oct 2023 01:26:56 -0700 (PDT) Received: by mail-ua1-f44.google.com with SMTP id a1e0cc1a2514c-7b99b89afdbso8631241.0 for ; Mon, 23 Oct 2023 01:26:56 -0700 (PDT) X-Received: by 2002:a67:ac4c:0:b0:457:cd5d:6ab5 with SMTP id n12-20020a67ac4c000000b00457cd5d6ab5mr8578255vsh.23.1698049615911; Mon, 23 Oct 2023 01:26:55 -0700 (PDT) MIME-Version: 1.0 References: <20231023043751.17114-1-jason-jh.lin@mediatek.com> <20231023043751.17114-4-jason-jh.lin@mediatek.com> In-Reply-To: <20231023043751.17114-4-jason-jh.lin@mediatek.com> From: Fei Shao Date: Mon, 23 Oct 2023 16:26:19 +0800 X-Gmail-Original-Message-ID: Message-ID: Subject: Re: [PATCH v2 3/9] soc: mailbox: Add cmdq_pkt_logic_command to support math operation To: "Jason-JH.Lin" Cc: Jassi Brar , Chun-Kuang Hu , AngeloGioacchino Del Regno , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Matthias Brugger , linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-mediatek@lists.infradead.org, Project_Global_Chrome_Upstream_Group@mediatek.com, Jeffrey Kardatzke , Jason-ch Chen , Johnson Wang , Singo Chang , Nancy Lin , Shawn Sung Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Spam-Status: No, score=-0.9 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on fry.vger.email Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (fry.vger.email [0.0.0.0]); Mon, 23 Oct 2023 01:27:17 -0700 (PDT) Hi Jason, On Mon, Oct 23, 2023 at 12:39=E2=80=AFPM Jason-JH.Lin wrote: > > Add cmdq_pkt_logic_command to support match operation. s/match/math/ > > cmdq_pkt_logic_command can append logic command to the CMDQ packet, > ask GCE to execute a arithematic calculate instruction, s/arithematic/arithmetic/ > such as add, subtract, multiply, AND, OR and NOT, etc. > > Note that all instructions just accept unsigned calculate. s/calculate/calculation/ Or I'd rephrase it as: Note that all arithmetic instructions are unsigned calculations. > If there are any overflows, GCE will sent the invalid IRQ to notify > CMDQ driver. > > Signed-off-by: Jason-JH.Lin > --- > drivers/soc/mediatek/mtk-cmdq-helper.c | 36 ++++++++++++++++++++++ > include/linux/soc/mediatek/mtk-cmdq.h | 41 ++++++++++++++++++++++++++ > 2 files changed, 77 insertions(+) > > diff --git a/drivers/soc/mediatek/mtk-cmdq-helper.c b/drivers/soc/mediate= k/mtk-cmdq-helper.c > index b0cd071c4719..5194d66dfc0a 100644 > --- a/drivers/soc/mediatek/mtk-cmdq-helper.c > +++ b/drivers/soc/mediatek/mtk-cmdq-helper.c > @@ -13,9 +13,18 @@ > #define CMDQ_WRITE_ENABLE_MASK BIT(0) > #define CMDQ_POLL_ENABLE_MASK BIT(0) > #define CMDQ_EOC_IRQ_EN BIT(0) > +#define CMDQ_IMMEDIATE_VALUE 0 > #define CMDQ_REG_TYPE 1 > #define CMDQ_JUMP_RELATIVE 1 > > +#define CMDQ_OPERAND_GET_IDX_VALUE(operand) \ > + ({ \ > + struct cmdq_operand *op =3D operand; \ > + op->reg ? op->idx : op->value; \ > + }) `((operand)->reg ? (operand)->idx : (operand)->value)` fits in one line. > +#define CMDQ_OPERAND_TYPE(operand) \ > + ((operand)->reg ? CMDQ_REG_TYPE : CMDQ_IMMEDIATE_VALUE) > + > struct cmdq_instruction { > union { > u32 value; > @@ -380,6 +389,33 @@ int cmdq_pkt_poll_mask(struct cmdq_pkt *pkt, u8 subs= ys, > } > EXPORT_SYMBOL(cmdq_pkt_poll_mask); > > +int cmdq_pkt_logic_command(struct cmdq_pkt *pkt, enum CMDQ_LOGIC_ENUM s_= op, > + u16 result_reg_idx, > + struct cmdq_operand *left_operand, > + struct cmdq_operand *right_operand) > +{ > + struct cmdq_instruction inst =3D { {0} }; > + u32 left_idx_value; > + u32 right_idx_value; > + > + if (!left_operand || !right_operand) > + return -EINVAL; > + > + left_idx_value =3D CMDQ_OPERAND_GET_IDX_VALUE(left_operand); > + right_idx_value =3D CMDQ_OPERAND_GET_IDX_VALUE(right_operand); > + inst.op =3D CMDQ_CODE_LOGIC; > + inst.dst_t =3D CMDQ_REG_TYPE; > + inst.src_t =3D CMDQ_OPERAND_TYPE(left_operand); > + inst.arg_c_t =3D CMDQ_OPERAND_TYPE(right_operand); > + inst.sop =3D s_op; > + inst.arg_c =3D right_idx_value; > + inst.src_reg =3D left_idx_value; > + inst.reg_dst =3D result_reg_idx; > + > + return cmdq_pkt_append_command(pkt, inst); > +} > +EXPORT_SYMBOL(cmdq_pkt_logic_command); > + > int cmdq_pkt_assign(struct cmdq_pkt *pkt, u16 reg_idx, u32 value) > { > struct cmdq_instruction inst =3D {}; > diff --git a/include/linux/soc/mediatek/mtk-cmdq.h b/include/linux/soc/me= diatek/mtk-cmdq.h > index a253c001c861..ea4fadfb5443 100644 > --- a/include/linux/soc/mediatek/mtk-cmdq.h > +++ b/include/linux/soc/mediatek/mtk-cmdq.h > @@ -26,6 +26,30 @@ > > struct cmdq_pkt; > > +enum CMDQ_LOGIC_ENUM { Use lower case, and perhaps use `cmdq_logic_type` or `cmdq_operator_type`. Regards, Fei