Received: by 2002:ad5:4acb:0:0:0:0:0 with SMTP id n11csp2433457imw; Sun, 17 Jul 2022 08:42:11 -0700 (PDT) X-Google-Smtp-Source: AGRyM1v88F22Jayy7Ntb4CevnHfCA62qLIgXMtXQoFnyJG7rNxP9VBG9pCMpVBFDm3E3iQqMcBQ1 X-Received: by 2002:a05:6402:40cb:b0:43a:8a99:225f with SMTP id z11-20020a05640240cb00b0043a8a99225fmr31914330edb.414.1658072530839; Sun, 17 Jul 2022 08:42:10 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1658072530; cv=none; d=google.com; s=arc-20160816; b=tuM3qcgJXmWZ+KWHrgVUPLDTGDpKaTsU0k4pyGqXGJkk/3SRi6qKteOFA1tCAX+K7k Woe5Qx/O/S60zzvidKgKql1sRmSwlhhDukFn5zZVdg4K60sXJ7hW6D55z5K34HS7C40X nClL23eI9ef5d4xzsh7W5Nr6sxEiwpQr+zUaEre2s1W9ZTqe2Om5fao1W8tDPczjwkbF 3UVOtU5eGybzLJ9lVT7RP2X+w8NiE2+v1ljWtFNCc5SigaHp6ikDkuq9ars7FogiJXkY hHDMab4K8xSNz5M/3sAYJ9AxLxlfbsVvks9R20uPNS62Jyt4YYG9E15AX+ReR02PE0sz kV2g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:subject:message-id:date:from:in-reply-to :references:mime-version:dkim-signature; bh=FJR2pz5CzsavtDacFuSIaaVs87hAtxkbL+dp9OXq/Us=; b=J2iZSYcBJqcVrq/HZu0p35C+NWpkOCZod4ppITWEmWSItgehsxAv5RTA5fQEuTNYma oAj1Z5mQsmC1mncKp7JXfbJi1s10cGVu+TF1INMaW+xhYjr3pO8ShE2IPC/Hfpo2/HSO oclbGr0pWwNm1fbgItJScZ6HOez1IJZkZhG4zMqivhNEjTLH3Vr/2TYFL+RsjcErBGVu gHwJfc21OtUEt7ymIpfhxm40An4tDAcj6I0eLnYqKABwHzrt8lkFt/f5DPZhqUC4p60w uwiJXvqJqENlXHb6VVRfiBkZEgdyotkfB6CLjJz4ega/2s0enoxRmwJn4zGckVV56jNc ShvA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20210112 header.b=Tm1WAhdH; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id dx20-20020a170906a85400b0072b3b4f015csi10938435ejb.311.2022.07.17.08.41.46; Sun, 17 Jul 2022 08:42:10 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20210112 header.b=Tm1WAhdH; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232876AbiGQPSC (ORCPT + 99 others); Sun, 17 Jul 2022 11:18:02 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:50886 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229775AbiGQPSA (ORCPT ); Sun, 17 Jul 2022 11:18:00 -0400 Received: from mail-ej1-x62c.google.com (mail-ej1-x62c.google.com [IPv6:2a00:1450:4864:20::62c]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 48DF0657F for ; Sun, 17 Jul 2022 08:17:59 -0700 (PDT) Received: by mail-ej1-x62c.google.com with SMTP id z23so17186740eju.8 for ; Sun, 17 Jul 2022 08:17:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=FJR2pz5CzsavtDacFuSIaaVs87hAtxkbL+dp9OXq/Us=; b=Tm1WAhdHtfxNQXcLR0JOGRN2TifbCh/zqSZ752fSKLSUVphPrepLHTLwP6Ay+PAagd iDClDs2uJyTFNy0BewXJ0NF87k84wKffI86gKbDdsnE2DgdCVWz4DthZeDm47uZnzXbU ysFgo+EZGe7uPJ2fv9SSZrjhn2N5kaO3DfncQ9C1XFvJG6OLtkuuEmXeS8OG8lWKX16+ gpW5nL1iBZD4BRJKdJq+eGJx415GUxQ5FPBXo3Rk9h4BVictoLuZvCv/dhOGNLgdvFKR 474z33m+HSC0Xhh/44BNh+H7gGMlEgwn+Q1ujY/4BR2tWl+3v4uYSaHfJ9ivBcYJ9zjQ +8+Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=FJR2pz5CzsavtDacFuSIaaVs87hAtxkbL+dp9OXq/Us=; b=2ue5Dhn0szm68I8AH74vEYtbzewfSoUpxo1hZQp5kJbUPbVriBU0ipuzqFbMrcVA+S 9z22yk+r5WnIgB967fUiTuYvJyZjjnwdfqDzd3ltbrMuIeGonvwfoIq+A8KVAvqlBq5E CObG0UD/KjH0hkZ7Yho7tWKvpfnv5GzmllucAwg7lcdD6Umfjc5qdowapdEX2c9ymKxa lC/t9bzsUHWHmi36ubwHlpMLcAdzAeC00SBJQPTmitiMBiM+K4HfEi1iVGXe7kw6g5yM /y8kWoeo+Cq25WYgCbC3ZuWl88hP9ecF7kOTOV1LyoN5QnQwWn9PVX+KrBF9d3jFx1P1 SX4w== X-Gm-Message-State: AJIora8egdAtezK+df3TxprzJ/sJOUpQNqUn0lSJsg3XrLOAKJ8H4QhX 8f/VUaYRzyNd6Cds8tjwkvYXIE4ektpW8xcMGFQ= X-Received: by 2002:a17:907:2722:b0:72b:735a:d3b4 with SMTP id d2-20020a170907272200b0072b735ad3b4mr21825574ejl.363.1658071077855; Sun, 17 Jul 2022 08:17:57 -0700 (PDT) MIME-Version: 1.0 References: <20220714121215.22931-1-wbartczak@marvell.com> <20220714121215.22931-3-wbartczak@marvell.com> In-Reply-To: <20220714121215.22931-3-wbartczak@marvell.com> From: Jassi Brar Date: Sun, 17 Jul 2022 10:17:46 -0500 Message-ID: Subject: Re: [PATCH 2/2] mailbox: mvl_mhu: Add support for Marvell Message Handling Unit To: Wojciech Bartczak Cc: Linux Kernel Mailing List , wbartczak@gmail.com, Piyush Malgujar , Sunil Goutham Content-Type: text/plain; charset="UTF-8" X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM, RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Thu, Jul 14, 2022 at 7:13 AM Wojciech Bartczak wrote: ... > +config MVL_MHU > + tristate "Marvell MHU Mailbox" if ARM_SCMI_PROTOCOL > + depends on OF && ARM64 You want to make it depend on your ARCH or COMPILE_TEST .... > diff --git a/drivers/mailbox/mvl_mhu.c b/drivers/mailbox/mvl_mhu.c > @@ -0,0 +1,473 @@ > +// SPDX-License-Identifier: GPL-2.0 > +/* > + * Marvell Message Handling Unit driver This doesn't seem to be related to ARM-MHU. Please consider calling it something else. ... > +#include > +#include > +#include > +#include > +#include > +#include > +#include > +#include > +#include > +#include > +#include > +#include > +#include > +#include > +#include > + please consider dropping unnecessary includes ... > +/* > + * Doorbell-Register: XCP(0..1)_DEV(0..7)_XCP_MBOX > + * Communication data from devices to XCP. When written, sets > + * XCP(0..1)_DEV(0..7)_XCP_MBOX. > + * PS: it doesn't matter what is written into this register, > + * Attempting to writing 'anything' would cause an interrupt > + * to the target! > + */ > + > +#define DONT_CARE_DATA 0xFF likely only one platform-specific bit needs to be set. you may want to get that from dt/client ? .... > +#define XCPX_DEVY_XCP_MBOX_OFFSET 0x000E1000 > +#define XCP_TO_DEV_XCP_MBOX(xcp_core, device_id) \ > + (XCPX_DEVY_XCP_MBOX_OFFSET | \ > + ((uint64_t)(xcp_core) << 36) | \ > + ((uint64_t)(device_id) << 4)) > + > +/* AP0-to-SCP doorbell */ > +#define AP0_TO_SCP_MBOX XCP_TO_DEV_XCP_MBOX(SCP_INDEX, DEV_AP0) > + > +/* Register offset: Enable interrupt from SCP to AP */ > +#define XCP0_XCP_DEV0_MBOX_RINT_ENA_W1S 0x000D1C40 > +#define XCP0_XCP_DEV1_MBOX_RINT_ENA_W1S 0x000D1C50 > +#define XCP0_XCP_DEV2_MBOX_RINT_ENA_W1S 0x000D1C60 > +#define XCP0_XCP_DEV3_MBOX_RINT_ENA_W1S 0x000D1C70 maybe use more compact defines? .... > + > +#define MHU_CHANNEL_INDEX(mhu, chan) (chan - &mhu->chan[0]) this is unused .... > + > +/* Secures static data processed in the irq handler */ > +DEFINE_SPINLOCK(mhu_irq_spinlock); Please move this in 'struct mhu' ... > +static irqreturn_t mhu_rx_interrupt_thread(int irq, void *p) > +{ > + struct mhu *mhu = (struct mhu *)p; > + struct int_src_data_s *data = (struct int_src_data_s *)mhu->payload; > + u64 val, scmi_tx_cnt; > + > + /* > + * Local copy of event counters. A mismatch of received > + * count value and the local copy means additional events > + * are being flagged that needs to be attended by AP > + */ > + static u64 event_counter[INDEX_INT_SRC_NONE] = {0}; Please move this in 'struct mhu' .... > +static bool mhu_last_tx_done(struct mbox_chan *chan) > +{ > + struct mhu *mhu = chan->con_priv; > + u64 status; > + > + status = ioread64(mhu->base + XCPX_XCP_DEVY_MBOX_RINT(0, 2)); > + pr_debug("last_tx_done status: %#llx\n", status); please use dev_XXX instead of pr_debug, here and elsewhere thanks