From: Jeffrey Hugo <jhugo@codeaurora.org>
To: Bjorn Andersson <bjorn.andersson@sonymobile.com>,
Ohad Ben-Cohen <ohad@wizery.com>,
Kumar Gala <galak@codeaurora.org>,
Rob Herring <robh+dt@kernel.org>, Pawel Moll <pawel.moll@arm.com>,
Mark Rutland <mark.rutland@arm.com>,
Ian Campbell <ijc+devicetree@hellion.org.uk>,
Grant Likely <grant.likely@linaro.org>
Cc: Suman Anna <s-anna@ti.com>,
devicetree@vger.kernel.org, linux-kernel@vger.kernel.org,
linux-arm-msm@vger.kernel.org,
Eric Holmberg <eholmber@codeaurora.org>,
Courtney Cavin <courtney.cavin@sonymobile.com>
Subject: Re: [PATCH v4] hwspinlock: qcom: Add support for Qualcomm HW Mutex block
Date: Tue, 30 Sep 2014 16:14:34 -0600 [thread overview]
Message-ID: <542B2B4A.7060002@codeaurora.org> (raw)
In-Reply-To: <1412051728-3289-1-git-send-email-bjorn.andersson@sonymobile.com>
On 9/29/2014 10:35 PM, Bjorn Andersson wrote:
> From: Kumar Gala <galak@codeaurora.org>
>
> Add driver for Qualcomm Hardware Mutex block that exists on newer
> Qualcomm SoCs.
>
> Cc: Jeffrey Hugo <jhugo@codeaurora.org>
> Cc: Eric Holmberg <eholmber@codeaurora.org>
> Cc: Courtney Cavin <courtney.cavin@sonymobile.com>
> Signed-off-by: Kumar Gala <galak@codeaurora.org>
> [bjorn: added pm_runtime calls, from Courtney,
> added sfpb-mutex compatible,
> updated DT binding documentation formatting,
> replaced msm prefix with qcom,
> cleaned up includes]
> Signed-off-by: Bjorn Andersson <bjorn.andersson@sonymobile.com>
> ---
>
> We need this driver to add support for the shared memory manager, so I'm
> reviving Kumars patch from a year ago, with some additional sprinkles on top.
>
> Changes since v3:
> - Reverted back to getting stride from of_match, per Kumars request
>
> Changes since v2:
> - MODULE_DEVICE_TABLE
> - Changed prefix to qcom
> - Cleaned up includes
> - Rely on reg and num-locks to figure out stride, instead of of_match data
>
> Changes since v1:
> - Added the pm_runtime calls needed to be able to boot a kernel with
> pm_runtime and this driver, patch from Courtney.
> - Added sfpb-mutex compatible, for re-use of the driver in family A platforms.
> - Updated formatting of DT binding documentation, while adding the extra
> compatible.
> - Dropped Stephen Boyds Reviewed-by due to these changes.
> .../devicetree/bindings/hwlock/qcom-hwspinlock.txt | 35 +++++
> drivers/hwspinlock/Kconfig | 11 ++
> drivers/hwspinlock/Makefile | 1 +
> drivers/hwspinlock/qcom_hwspinlock.c | 151 ++++++++++++++++++++
> 4 files changed, 198 insertions(+)
> create mode 100644 Documentation/devicetree/bindings/hwlock/qcom-hwspinlock.txt
> create mode 100644 drivers/hwspinlock/qcom_hwspinlock.c
>
<snip>
> +static int qcom_hwspinlock_probe(struct platform_device *pdev)
> +{
> + struct device_node *node = pdev->dev.of_node;
> + const struct of_device_id *match;
> + struct hwspinlock_device *bank;
> + struct hwspinlock *hwlock;
> + struct resource *res;
> + void __iomem *iobase;
> + unsigned stride, i;
> + size_t array_size;
> + u32 num_locks;
> + int ret;
> +
> + match = of_match_device(qcom_hwspinlock_of_match, &pdev->dev);
Didn't this have error handling in v2?
> +
> + ret = of_property_read_u32(node, "qcom,num-locks", &num_locks);
> + if (ret || num_locks == 0)
> + return -ENODEV;
> +
> + res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "mutex-base");
> + iobase = devm_ioremap_resource(&pdev->dev, res);
> + if (IS_ERR(iobase))
> + return PTR_ERR(iobase);
> +
> + array_size = num_locks * sizeof(*hwlock);
> + bank = devm_kzalloc(&pdev->dev, sizeof(*bank) + array_size, GFP_KERNEL);
> + if (!bank)
> + return -ENOMEM;
> +
> + platform_set_drvdata(pdev, bank);
> +
> + stride = (unsigned)match->data;
> + for (i = 0, hwlock = &bank->lock[0]; i < num_locks; i++, hwlock++)
> + hwlock->priv = iobase + i * stride;
> +
> + pm_runtime_enable(&pdev->dev);
> +
> + ret = hwspin_lock_register(bank, &pdev->dev, &qcom_hwspinlock_ops,
> + BASE_ID, num_locks);
> + if (ret)
> + pm_runtime_disable(&pdev->dev);
> +
> + return ret;
> +}
> +
> +static int qcom_hwspinlock_remove(struct platform_device *pdev)
> +{
> + struct hwspinlock_device *bank = platform_get_drvdata(pdev);
> + int ret;
> +
> + ret = hwspin_lock_unregister(bank);
> + if (ret) {
> + dev_err(&pdev->dev, "%s failed: %d\n", __func__, ret);
> + return ret;
> + }
> +
> + pm_runtime_disable(&pdev->dev);
> +
> + return 0;
> +}
> +
> +static struct platform_driver qcom_hwspinlock_driver = {
> + .probe = qcom_hwspinlock_probe,
> + .remove = qcom_hwspinlock_remove,
> + .driver = {
> + .name = "qcom_hwspinlock",
> + .of_match_table = qcom_hwspinlock_of_match,
> + },
> +};
> +
> +static int __init qcom_hwspinlock_init(void)
> +{
> + return platform_driver_register(&qcom_hwspinlock_driver);
> +}
> +/* board init code might need to reserve hwspinlocks for predefined purposes */
> +postcore_initcall(qcom_hwspinlock_init);
> +
> +static void __exit qcom_hwspinlock_exit(void)
> +{
> + platform_driver_unregister(&qcom_hwspinlock_driver);
> +}
> +module_exit(qcom_hwspinlock_exit);
> +
> +MODULE_LICENSE("GPL v2");
> +MODULE_DESCRIPTION("Hardware spinlock driver for Qualcomm SoCs");
> +MODULE_AUTHOR("Kumar Gala <galak@codeaurora.org>");
> +MODULE_AUTHOR("Jeffrey Hugo <jhugo@codeaurora.org>");
> +MODULE_AUTHOR("Eric Holmberg <eholmber@codeaurora.org>");
>
Jeffrey Hugo
--
The Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum,
hosted by The Linux Foundation.
next prev parent reply other threads:[~2014-09-30 22:14 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-09-30 4:35 [PATCH v4] hwspinlock: qcom: Add support for Qualcomm HW Mutex block Bjorn Andersson
2014-09-30 4:35 ` Bjorn Andersson
[not found] ` <1412051728-3289-1-git-send-email-bjorn.andersson-/MT0OVThwyLZJqsBc5GL+g@public.gmane.org>
2014-09-30 21:48 ` Suman Anna
2014-09-30 21:48 ` Suman Anna
2014-09-30 22:14 ` Bjorn Andersson
2014-09-30 22:14 ` Jeffrey Hugo [this message]
[not found] ` <542B2B4A.7060002-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org>
2014-09-30 22:27 ` Bjorn Andersson
2014-09-30 22:27 ` Bjorn Andersson
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=542B2B4A.7060002@codeaurora.org \
--to=jhugo@codeaurora.org \
--cc=bjorn.andersson@sonymobile.com \
--cc=courtney.cavin@sonymobile.com \
--cc=devicetree@vger.kernel.org \
--cc=eholmber@codeaurora.org \
--cc=galak@codeaurora.org \
--cc=grant.likely@linaro.org \
--cc=ijc+devicetree@hellion.org.uk \
--cc=linux-arm-msm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mark.rutland@arm.com \
--cc=ohad@wizery.com \
--cc=pawel.moll@arm.com \
--cc=robh+dt@kernel.org \
--cc=s-anna@ti.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.