[PATCH] hwspinlock: remove sirf driver

Barry Song baohua at kernel.org
Wed Jan 20 16:29:19 EST 2021


Arnd Bergmann <arnd at kernel.org> 于2021年1月21日周四 上午2:22写道:
>
> From: Arnd Bergmann <arnd at arndb.de>
>
> The CSR SiRF prima2/atlas platforms are getting removed, so this driver
> is no longer needed.
>
> Cc: Barry Song <baohua at kernel.org>
> Link: https://lore.kernel.org/linux-arm-kernel/20210120124812.2800027-1-arnd@kernel.org/T/
> Signed-off-by: Arnd Bergmann <arnd at arndb.de>

Acked-by: Barry Song <baohua at kernel.org>

> ---
>  .../bindings/hwlock/sirf,hwspinlock.txt       |  28 -----
>  drivers/hwspinlock/Kconfig                    |  11 --
>  drivers/hwspinlock/Makefile                   |   1 -
>  drivers/hwspinlock/sirf_hwspinlock.c          | 105 ------------------
>  4 files changed, 145 deletions(-)
>  delete mode 100644 Documentation/devicetree/bindings/hwlock/sirf,hwspinlock.txt
>  delete mode 100644 drivers/hwspinlock/sirf_hwspinlock.c
>
> diff --git a/Documentation/devicetree/bindings/hwlock/sirf,hwspinlock.txt b/Documentation/devicetree/bindings/hwlock/sirf,hwspinlock.txt
> deleted file mode 100644
> index 9bb1240a68e0..000000000000
> --- a/Documentation/devicetree/bindings/hwlock/sirf,hwspinlock.txt
> +++ /dev/null
> @@ -1,28 +0,0 @@
> -SIRF Hardware spinlock device Binding
> ------------------------------------------------
> -
> -Required properties :
> -- compatible : shall contain only one of the following:
> -       "sirf,hwspinlock"
> -
> -- reg : the register address of hwspinlock
> -
> -- #hwlock-cells : hwlock users only use the hwlock id to represent a specific
> -       hwlock, so the number of cells should be <1> here.
> -
> -Please look at the generic hwlock binding for usage information for consumers,
> -"Documentation/devicetree/bindings/hwlock/hwlock.txt"
> -
> -Example of hwlock provider:
> -       hwlock {
> -               compatible = "sirf,hwspinlock";
> -               reg = <0x13240000 0x00010000>;
> -               #hwlock-cells = <1>;
> -       };
> -
> -Example of hwlock users:
> -       node {
> -               ...
> -               hwlocks = <&hwlock 2>;
> -               ...
> -       };
> diff --git a/drivers/hwspinlock/Kconfig b/drivers/hwspinlock/Kconfig
> index 32cd26352f38..53e13476e831 100644
> --- a/drivers/hwspinlock/Kconfig
> +++ b/drivers/hwspinlock/Kconfig
> @@ -28,17 +28,6 @@ config HWSPINLOCK_QCOM
>
>           If unsure, say N.
>
> -config HWSPINLOCK_SIRF
> -       tristate "SIRF Hardware Spinlock device"
> -       depends on ARCH_SIRF || COMPILE_TEST
> -       help
> -         Say y here to support the SIRF Hardware Spinlock device, which
> -         provides a synchronisation mechanism for the various processors
> -         on the SoC.
> -
> -         It's safe to say n here if you're not interested in SIRF hardware
> -         spinlock or just want a bare minimum kernel.
> -
>  config HWSPINLOCK_SPRD
>         tristate "SPRD Hardware Spinlock device"
>         depends on ARCH_SPRD || COMPILE_TEST
> diff --git a/drivers/hwspinlock/Makefile b/drivers/hwspinlock/Makefile
> index ed053e3f02be..1f8dd6f5814f 100644
> --- a/drivers/hwspinlock/Makefile
> +++ b/drivers/hwspinlock/Makefile
> @@ -6,7 +6,6 @@
>  obj-$(CONFIG_HWSPINLOCK)               += hwspinlock_core.o
>  obj-$(CONFIG_HWSPINLOCK_OMAP)          += omap_hwspinlock.o
>  obj-$(CONFIG_HWSPINLOCK_QCOM)          += qcom_hwspinlock.o
> -obj-$(CONFIG_HWSPINLOCK_SIRF)          += sirf_hwspinlock.o
>  obj-$(CONFIG_HWSPINLOCK_SPRD)          += sprd_hwspinlock.o
>  obj-$(CONFIG_HWSPINLOCK_STM32)         += stm32_hwspinlock.o
>  obj-$(CONFIG_HSEM_U8500)               += u8500_hsem.o
> diff --git a/drivers/hwspinlock/sirf_hwspinlock.c b/drivers/hwspinlock/sirf_hwspinlock.c
> deleted file mode 100644
> index a3f77120bad7..000000000000
> --- a/drivers/hwspinlock/sirf_hwspinlock.c
> +++ /dev/null
> @@ -1,105 +0,0 @@
> -// SPDX-License-Identifier: GPL-2.0
> -/*
> - * SIRF hardware spinlock driver
> - *
> - * Copyright (c) 2015 Cambridge Silicon Radio Limited, a CSR plc group company.
> - */
> -
> -#include <linux/kernel.h>
> -#include <linux/module.h>
> -#include <linux/device.h>
> -#include <linux/io.h>
> -#include <linux/slab.h>
> -#include <linux/spinlock.h>
> -#include <linux/hwspinlock.h>
> -#include <linux/platform_device.h>
> -#include <linux/of.h>
> -#include <linux/of_address.h>
> -
> -#include "hwspinlock_internal.h"
> -
> -struct sirf_hwspinlock {
> -       void __iomem *io_base;
> -       struct hwspinlock_device bank;
> -};
> -
> -/* Number of Hardware Spinlocks*/
> -#define        HW_SPINLOCK_NUMBER      30
> -
> -/* Hardware spinlock register offsets */
> -#define HW_SPINLOCK_BASE       0x404
> -#define HW_SPINLOCK_OFFSET(x)  (HW_SPINLOCK_BASE + 0x4 * (x))
> -
> -static int sirf_hwspinlock_trylock(struct hwspinlock *lock)
> -{
> -       void __iomem *lock_addr = lock->priv;
> -
> -       /* attempt to acquire the lock by reading value == 1 from it */
> -       return !!readl(lock_addr);
> -}
> -
> -static void sirf_hwspinlock_unlock(struct hwspinlock *lock)
> -{
> -       void __iomem *lock_addr = lock->priv;
> -
> -       /* release the lock by writing 0 to it */
> -       writel(0, lock_addr);
> -}
> -
> -static const struct hwspinlock_ops sirf_hwspinlock_ops = {
> -       .trylock = sirf_hwspinlock_trylock,
> -       .unlock = sirf_hwspinlock_unlock,
> -};
> -
> -static int sirf_hwspinlock_probe(struct platform_device *pdev)
> -{
> -       struct sirf_hwspinlock *hwspin;
> -       struct hwspinlock *hwlock;
> -       int idx;
> -
> -       if (!pdev->dev.of_node)
> -               return -ENODEV;
> -
> -       hwspin = devm_kzalloc(&pdev->dev,
> -                             struct_size(hwspin, bank.lock,
> -                                         HW_SPINLOCK_NUMBER),
> -                             GFP_KERNEL);
> -       if (!hwspin)
> -               return -ENOMEM;
> -
> -       /* retrieve io base */
> -       hwspin->io_base = devm_platform_ioremap_resource(pdev, 0);
> -       if (IS_ERR(hwspin->io_base))
> -               return PTR_ERR(hwspin->io_base);
> -
> -       for (idx = 0; idx < HW_SPINLOCK_NUMBER; idx++) {
> -               hwlock = &hwspin->bank.lock[idx];
> -               hwlock->priv = hwspin->io_base + HW_SPINLOCK_OFFSET(idx);
> -       }
> -
> -       platform_set_drvdata(pdev, hwspin);
> -
> -       return devm_hwspin_lock_register(&pdev->dev, &hwspin->bank,
> -                                        &sirf_hwspinlock_ops, 0,
> -                                        HW_SPINLOCK_NUMBER);
> -}
> -
> -static const struct of_device_id sirf_hwpinlock_ids[] = {
> -       { .compatible = "sirf,hwspinlock", },
> -       {},
> -};
> -MODULE_DEVICE_TABLE(of, sirf_hwpinlock_ids);
> -
> -static struct platform_driver sirf_hwspinlock_driver = {
> -       .probe = sirf_hwspinlock_probe,
> -       .driver = {
> -               .name = "atlas7_hwspinlock",
> -               .of_match_table = sirf_hwpinlock_ids,
> -       },
> -};
> -
> -module_platform_driver(sirf_hwspinlock_driver);
> -
> -MODULE_LICENSE("GPL v2");
> -MODULE_DESCRIPTION("SIRF Hardware spinlock driver");
> -MODULE_AUTHOR("Wei Chen <wei.chen at csr.com>");
> --
> 2.29.2
>



More information about the linux-arm-kernel mailing list