Received: by 2002:a05:6a10:22f:0:0:0:0 with SMTP id 15csp1447708pxk; Thu, 10 Sep 2020 16:02:07 -0700 (PDT) X-Google-Smtp-Source: ABdhPJw7eBGsBaW9MhG8LQ1taQQB2uYc5GnI9TZ50g/Hv9GFkAazZ482OfoNpwgz85Y1niWBIfkA X-Received: by 2002:a05:6402:17b9:: with SMTP id j25mr12034303edy.203.1599778927536; Thu, 10 Sep 2020 16:02:07 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1599778927; cv=none; d=google.com; s=arc-20160816; b=iphtXfmF905BzijO38qO3Y8sOWifetC5zToeaHAOYjmtd1KcOGvoaSeaPCAIPbeqou btqWYm8BD5s0r5+LH2GUXSFiO57NZq3lCdb52esD2EheSQKJLtZhgQxlCk7VK+5ukNta +wDQM/TzIDSR9pgKe9Txx40RViBzWcJdpe6wwXji8mQKq2jKjoEG2+K/7/WXUmwHdieP xMHXC3EKAq2vhELe+682VKHg6xLxYiJ8tGKJ+J0j5bKnm8PoO5e/bRwlZHxC+7jPmo5x POrWwA6+o+VBny5Kod93AFcON+T/85bCAokkIwES1DpgqZBOqrAtWF7G4ktb3lEbw/TE WtTQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:in-reply-to:content-disposition :mime-version:references:message-id:subject:cc:to:from:date :dkim-signature; bh=2dzaHwMJ36N3lHsGz+9WGLYGK0RTqQ+MiSBCelwtxPg=; b=l81wNx0I8Xp0qUkYCnk393t9E/4qSs15qhHVnPUWeCnAFtrF42TBTfHAfXBD0hcHqf SIMXw/ywj3Ehto3t+3yiOdb3otqilu/f10/B1dg15UbDZMphulXBWlfDGt8pdr7dCEOb VAb74TSsfHiT5QZd9YPTxYHbykDYXH7QhKtnBjoLrffUK74iJeuRnwp4yk3MHyjZ3ams g/HU3RIyH4OSAUNCeQOg/MiGoZkGRHaBxxYupYGedxYt0DdxC3GyqYAXzd/mqdikFcwZ EEAzC2ZZUdR2TaEQZjkavtdxttNYi/TuHexe0eJXozpIBUOLxEy0W/K04p+cVD4wn7up WuZw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=u4FVLUfM; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id m18si50259eja.292.2020.09.10.16.01.40; Thu, 10 Sep 2020 16:02:07 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=u4FVLUfM; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1725550AbgIJXAW (ORCPT + 99 others); Thu, 10 Sep 2020 19:00:22 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:51258 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725280AbgIJXAR (ORCPT ); Thu, 10 Sep 2020 19:00:17 -0400 Received: from mail-pf1-x441.google.com (mail-pf1-x441.google.com [IPv6:2607:f8b0:4864:20::441]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 2A3F0C061573 for ; Thu, 10 Sep 2020 16:00:17 -0700 (PDT) Received: by mail-pf1-x441.google.com with SMTP id n14so5716507pff.6 for ; Thu, 10 Sep 2020 16:00:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=date:from:to:cc:subject:message-id:references:mime-version :content-disposition:in-reply-to; bh=2dzaHwMJ36N3lHsGz+9WGLYGK0RTqQ+MiSBCelwtxPg=; b=u4FVLUfMVIZYnZvXjz42qfG0Eoar+u9d9ZLO8uqAG0tzNJ/ZOB4v45hFKBOwihqa1N LJ0aZ6njXqSNYDoZo6nWbyOlunx/cz+B4RIwxm/XaMIOOZqFmiF7pUe12QWDTOtaedVL U6YqIuKI7NmnR9CxXEQX4cXETi2m4zUS36BYpPOU9z2TUlvHKntpYuxDzgkmmG7n/gNM Y1t8ftYTwH34RTQa6xm3FGA9S0yfXnb3GbPkVU9rd9GEXk0mQ9lAmLo83QheM6ECUqt+ Se8LFU1S4HH7tAYP/752cFD2fBTt5Wer6ga8M09/52PSEOyt0+oEVh2rBaOK/RnJ5MGc CpRw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:in-reply-to; bh=2dzaHwMJ36N3lHsGz+9WGLYGK0RTqQ+MiSBCelwtxPg=; b=LwD1SQrs6/z7zbOAShsku2WYeNwzTtxAKIa5TBnj5mY8BTFcUwOIseF8i4M1PqT24Z viVqmu4RzUqrgB+1/HXsYewTWGIVd1ROPL55Djo7SqjmvMiBLkvPrSSccEfYdecDo8Dc 9QyOLGpZgkEj8n40fYCTtOo2BsTMW0AdWVipjY6NkhDAQn7cpwJrzNlQq7wegFpaBnlU nd4VoyLiP3udZ0whhR9bHILWIVeEs0la2nd3cusQBuv8K3L7RHBkvlvJgJvdo/yazG6X 4DxKgE7DQExfQIXS73JLA8uQoumSdSpjzcng1DxU/CWal7fQhd7TyrlXRtN3XxGpDxut qGjw== X-Gm-Message-State: AOAM530cnsjWfH9QuUQw0ddXytxLNzCHJc0DY2witillyPYBd/9vPd+4 jMKWrLEUfKUE6XrE4nTVDhqR7A== X-Received: by 2002:a63:7a57:: with SMTP id j23mr6522515pgn.262.1599778816624; Thu, 10 Sep 2020 16:00:16 -0700 (PDT) Received: from xps15 (S0106002369de4dac.cg.shawcable.net. [68.147.8.254]) by smtp.gmail.com with ESMTPSA id 13sm151185pfp.3.2020.09.10.16.00.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 10 Sep 2020 16:00:16 -0700 (PDT) Date: Thu, 10 Sep 2020 17:00:13 -0600 From: Mathieu Poirier To: Tingwei Zhang Cc: Suzuki K Poulose , Alexander Shishkin , Mike Leach , Kim Phillips , Greg Kroah-Hartman , Leo Yan , Randy Dunlap , Russell King , Mian Yousaf Kaukab , tsoni@codeaurora.org, Sai Prakash Ranjan , Mao Jinlong , coresight@lists.linaro.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH v10 15/24] coresight: allow replicator driver to be built as module Message-ID: <20200910230013.GC590446@xps15> References: <20200821034445.967-1-tingwei@codeaurora.org> <20200821034445.967-16-tingwei@codeaurora.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20200821034445.967-16-tingwei@codeaurora.org> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Fri, Aug 21, 2020 at 11:44:36AM +0800, Tingwei Zhang wrote: > From: Kim Phillips > > Allow to build coresight-replicator as modules, for ease of development. > > - Kconfig becomes a tristate, to allow =m > - combine static and dynamic replicator init into single > module_init/exit call > - add replicator_remove functions, for module unload > - add a MODULE_DEVICE_TABLE for autoloading on boot > > Cc: Mathieu Poirier > Cc: Leo Yan > Cc: Alexander Shishkin > Cc: Randy Dunlap > Cc: Suzuki K Poulose > Cc: Greg Kroah-Hartman > Cc: Russell King > Co-developed-by: Mian Yousaf Kaukab > Signed-off-by: Mian Yousaf Kaukab > Signed-off-by: Kim Phillips > Signed-off-by: Tingwei Zhang > Tested-by: Mike Leach > --- > drivers/hwtracing/coresight/Kconfig | 5 +- > .../coresight/coresight-replicator.c | 65 ++++++++++++++++++- > 2 files changed, 67 insertions(+), 3 deletions(-) Reviewed-by: Mathieu Poirier > > diff --git a/drivers/hwtracing/coresight/Kconfig b/drivers/hwtracing/coresight/Kconfig > index fc48ae086746..f31778dd0b5d 100644 > --- a/drivers/hwtracing/coresight/Kconfig > +++ b/drivers/hwtracing/coresight/Kconfig > @@ -17,13 +17,16 @@ menuconfig CORESIGHT > > if CORESIGHT > config CORESIGHT_LINKS_AND_SINKS > - bool "CoreSight Link and Sink drivers" > + tristate "CoreSight Link and Sink drivers" > help > This enables support for CoreSight link and sink drivers that are > responsible for transporting and collecting the trace data > respectively. Link and sinks are dynamically aggregated with a trace > entity at run time to form a complete trace path. > > + To compile these drivers as modules, choose M here: the > + modules will be called coresight-funnel and coresight-replicator. > + > config CORESIGHT_LINK_AND_SINK_TMC > tristate "Coresight generic TMC driver" > > diff --git a/drivers/hwtracing/coresight/coresight-replicator.c b/drivers/hwtracing/coresight/coresight-replicator.c > index 78acf29c49ca..62afdde0e5ea 100644 > --- a/drivers/hwtracing/coresight/coresight-replicator.c > +++ b/drivers/hwtracing/coresight/coresight-replicator.c > @@ -291,6 +291,14 @@ static int replicator_probe(struct device *dev, struct resource *res) > return ret; > } > > +static int __exit replicator_remove(struct device *dev) > +{ > + struct replicator_drvdata *drvdata = dev_get_drvdata(dev); > + > + coresight_unregister(drvdata->csdev); > + return 0; > +} > + > static int static_replicator_probe(struct platform_device *pdev) > { > int ret; > @@ -310,6 +318,13 @@ static int static_replicator_probe(struct platform_device *pdev) > return ret; > } > > +static int __exit static_replicator_remove(struct platform_device *pdev) > +{ > + replicator_remove(&pdev->dev); > + pm_runtime_disable(&pdev->dev); > + return 0; > +} > + > #ifdef CONFIG_PM > static int replicator_runtime_suspend(struct device *dev) > { > @@ -343,24 +358,29 @@ static const struct of_device_id static_replicator_match[] = { > {} > }; > > +MODULE_DEVICE_TABLE(of, static_replicator_match); > + > #ifdef CONFIG_ACPI > static const struct acpi_device_id static_replicator_acpi_ids[] = { > {"ARMHC985", 0}, /* ARM CoreSight Static Replicator */ > {} > }; > + > +MODULE_DEVICE_TABLE(acpi, static_replicator_acpi_ids); > #endif > > static struct platform_driver static_replicator_driver = { > .probe = static_replicator_probe, > + .remove = static_replicator_remove, > .driver = { > .name = "coresight-static-replicator", > + .owner = THIS_MODULE, > .of_match_table = of_match_ptr(static_replicator_match), > .acpi_match_table = ACPI_PTR(static_replicator_acpi_ids), > .pm = &replicator_dev_pm_ops, > .suppress_bind_attrs = true, > }, > }; > -builtin_platform_driver(static_replicator_driver); > > static int dynamic_replicator_probe(struct amba_device *adev, > const struct amba_id *id) > @@ -368,19 +388,60 @@ static int dynamic_replicator_probe(struct amba_device *adev, > return replicator_probe(&adev->dev, &adev->res); > } > > +static int __exit dynamic_replicator_remove(struct amba_device *adev) > +{ > + return replicator_remove(&adev->dev); > +} > + > static const struct amba_id dynamic_replicator_ids[] = { > CS_AMBA_ID(0x000bb909), > CS_AMBA_ID(0x000bb9ec), /* Coresight SoC-600 */ > {}, > }; > > +MODULE_DEVICE_TABLE(amba, dynamic_replicator_ids); > + > static struct amba_driver dynamic_replicator_driver = { > .drv = { > .name = "coresight-dynamic-replicator", > .pm = &replicator_dev_pm_ops, > + .owner = THIS_MODULE, > .suppress_bind_attrs = true, > }, > .probe = dynamic_replicator_probe, > + .remove = dynamic_replicator_remove, > .id_table = dynamic_replicator_ids, > }; > -builtin_amba_driver(dynamic_replicator_driver); > + > +static int __init replicator_init(void) > +{ > + int ret; > + > + ret = platform_driver_register(&static_replicator_driver); > + if (ret) { > + pr_info("Error registering platform driver\n"); > + return ret; > + } > + > + ret = amba_driver_register(&dynamic_replicator_driver); > + if (ret) { > + pr_info("Error registering amba driver\n"); > + platform_driver_unregister(&static_replicator_driver); > + } > + > + return ret; > +} > + > +static void __exit replicator_exit(void) > +{ > + platform_driver_unregister(&static_replicator_driver); > + amba_driver_unregister(&dynamic_replicator_driver); > +} > + > +module_init(replicator_init); > +module_exit(replicator_exit); > + > +MODULE_AUTHOR("Pratik Patel "); > +MODULE_AUTHOR("Mathieu Poirier "); > +MODULE_DESCRIPTION("Arm CoreSight Replicator Driver"); > +MODULE_LICENSE("GPL v2"); > -- > The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum, > a Linux Foundation Collaborative Project >