summaryrefslogtreecommitdiffstats
path: root/meta-rcar-gen3/recipes-kernel/linux/linux-renesas/0016-Revert-hwspinlock-rcar-Add-support-for-R-Car-Gen3-Ha.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta-rcar-gen3/recipes-kernel/linux/linux-renesas/0016-Revert-hwspinlock-rcar-Add-support-for-R-Car-Gen3-Ha.patch')
-rw-r--r--meta-rcar-gen3/recipes-kernel/linux/linux-renesas/0016-Revert-hwspinlock-rcar-Add-support-for-R-Car-Gen3-Ha.patch220
1 files changed, 220 insertions, 0 deletions
diff --git a/meta-rcar-gen3/recipes-kernel/linux/linux-renesas/0016-Revert-hwspinlock-rcar-Add-support-for-R-Car-Gen3-Ha.patch b/meta-rcar-gen3/recipes-kernel/linux/linux-renesas/0016-Revert-hwspinlock-rcar-Add-support-for-R-Car-Gen3-Ha.patch
new file mode 100644
index 0000000..7fd5650
--- /dev/null
+++ b/meta-rcar-gen3/recipes-kernel/linux/linux-renesas/0016-Revert-hwspinlock-rcar-Add-support-for-R-Car-Gen3-Ha.patch
@@ -0,0 +1,220 @@
+From 90628b9c9b731cff9071a6d587431e0a4b8e5c0a Mon Sep 17 00:00:00 2001
+From: Hiroki Negishi <hiroki.negishi.bx@renesas.com>
+Date: Mon, 13 Nov 2017 11:57:53 +0900
+Subject: [PATCH 16/23] Revert "hwspinlock: rcar: Add support for R-Car Gen3
+ Hardware Spinlock"
+
+This reverts commit 18ff508d5241 ("hwspinlock: rcar: Add support
+for R-Car Gen3 Hardware Spinlock")
+
+Signed-off-by: Hiroki Negishi <hiroki.negishi.bx@renesas.com>
+---
+ drivers/hwspinlock/Kconfig | 13 ---
+ drivers/hwspinlock/Makefile | 1 -
+ drivers/hwspinlock/rcar_hwspinlock.c | 162 -----------------------------------
+ 3 files changed, 176 deletions(-)
+ delete mode 100644 drivers/hwspinlock/rcar_hwspinlock.c
+
+diff --git a/drivers/hwspinlock/Kconfig b/drivers/hwspinlock/Kconfig
+index f0c0a35..73a4016 100644
+--- a/drivers/hwspinlock/Kconfig
++++ b/drivers/hwspinlock/Kconfig
+@@ -53,17 +53,4 @@ config HSEM_U8500
+
+ If unsure, say N.
+
+-config HWSPINLOCK_RCAR
+- bool "R-Car Hardware Spinlock functionality"
+- depends on ARCH_RENESAS
+- select HWSPINLOCK
+- default y
+- help
+- Say y here to support the R-Car Hardware Spinlock functionality, which
+- provides a synchronisation mechanism for the various processor on the
+- SoC.
+- This function is implemented with MFIS device.
+-
+- If unsure, say N.
+-
+ endmenu
+diff --git a/drivers/hwspinlock/Makefile b/drivers/hwspinlock/Makefile
+index 4ee4001..6b59cb5a 100644
+--- a/drivers/hwspinlock/Makefile
++++ b/drivers/hwspinlock/Makefile
+@@ -6,5 +6,4 @@ 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_RCAR) += rcar_hwspinlock.o
+ obj-$(CONFIG_HSEM_U8500) += u8500_hsem.o
+diff --git a/drivers/hwspinlock/rcar_hwspinlock.c b/drivers/hwspinlock/rcar_hwspinlock.c
+deleted file mode 100644
+index 8b45c49..0000000
+--- a/drivers/hwspinlock/rcar_hwspinlock.c
++++ /dev/null
+@@ -1,162 +0,0 @@
+-/*
+- * rcar_hwspinlock.c
+- *
+- * Copyright (C) 2017 Renesas Electronics Corporation
+- *
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License version 2
+- * as published by the Free Software Foundation.
+- *
+- * This program is distributed in the hope that it will be useful,
+- * but WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+- * GNU General Public License for more details.
+- */
+-#include <linux/hwspinlock.h>
+-#include <linux/kernel.h>
+-#include <linux/module.h>
+-#include <linux/pm_runtime.h>
+-#include <linux/of.h>
+-#include <linux/of_device.h>
+-#include <linux/of_address.h>
+-#include <linux/platform_device.h>
+-#include <linux/io.h>
+-#include <linux/sys_soc.h>
+-
+-#include "hwspinlock_internal.h"
+-
+-#define MFISLCKR0_OFFSET 0x000000C0
+-#define MFISLCKR8_OFFSET 0x00000724
+-#define MFISLCKR_NUM_8 8 /* r8a7795 ES1.*, r8a7796 ES1.* */
+-#define MFISLCKR_NUM_64 64
+-
+-static int rcar_hwspinlock_trylock(struct hwspinlock *lock)
+-{
+- void *addr = lock->priv;
+-
+- return !ioread32((void __iomem *)addr);
+-}
+-
+-static void rcar_hwspinlock_unlock(struct hwspinlock *lock)
+-{
+- void *addr = lock->priv;
+-
+- iowrite32(0, (void __iomem *)addr);
+-}
+-
+-static const struct hwspinlock_ops rcar_hwspinlock_ops = {
+- .trylock = rcar_hwspinlock_trylock,
+- .unlock = rcar_hwspinlock_unlock,
+-};
+-
+-static const struct soc_device_attribute mfislock_quirks_match[] = {
+- { .soc_id = "r8a7795", .revision = "ES1.*" },
+- { .soc_id = "r8a7796", .revision = "ES1.*" },
+- { /* sentinel */ }
+-};
+-
+-static const struct of_device_id rcar_hwspinlock_of_match[] = {
+- { .compatible = "renesas,mfis-lock" },
+- { },
+-};
+-MODULE_DEVICE_TABLE(of, rcar_hwspinlock_of_match);
+-
+-static int rcar_hwspinlock_probe(struct platform_device *pdev)
+-{
+- int ch;
+- int num_locks = MFISLCKR_NUM_64;
+- int ret = 0;
+- u32 __iomem *addr;
+- struct resource *res;
+- struct hwspinlock_device *bank;
+-
+- /* allocate hwspinlock control info */
+- bank = devm_kzalloc(&pdev->dev, sizeof(*bank)
+- + sizeof(struct hwspinlock) * MFISLCKR_NUM_64,
+- GFP_KERNEL);
+- if (!bank) {
+- dev_err(&pdev->dev, "Failed to allocate memory.\n");
+- ret = -ENOMEM;
+- goto out;
+- }
+-
+- res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
+-
+- /* map MFIS lock register */
+- addr = (u32 __iomem *)devm_ioremap_nocache(&pdev->dev,
+- res->start,
+- resource_size(res));
+- if (!addr) {
+- dev_err(&pdev->dev, "Failed to remap register.\n");
+- ret = PTR_ERR(addr);
+- goto out;
+- }
+-
+- /* create lock for MFISLCKR0-7 */
+- for (ch = 0; ch < 8; ch++)
+- bank->lock[ch].priv = (void __force *)addr + MFISLCKR0_OFFSET
+- + sizeof(u32) * ch;
+-
+- /* create lock for MFISLCKR8-63 */
+- for (ch = 8; ch < 64; ch++)
+- bank->lock[ch].priv = (void __force *)addr + MFISLCKR8_OFFSET
+- + sizeof(u32) * (ch - 8);
+-
+- platform_set_drvdata(pdev, bank);
+-
+- ret = of_platform_populate(pdev->dev.of_node, NULL, NULL, &pdev->dev);
+- if (ret)
+- goto out;
+-
+- pm_runtime_enable(&pdev->dev);
+-
+- /* register hwspinlock */
+- if (soc_device_match(mfislock_quirks_match))
+- num_locks = MFISLCKR_NUM_8;
+-
+- ret = hwspin_lock_register(bank, &pdev->dev, &rcar_hwspinlock_ops,
+- 0, num_locks);
+- if (ret)
+- pm_runtime_disable(&pdev->dev);
+-
+-out:
+- return ret;
+-}
+-
+-static int rcar_hwspinlock_remove(struct platform_device *pdev)
+-{
+- int ret;
+-
+- ret = hwspin_lock_unregister(platform_get_drvdata(pdev));
+- 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 rcar_hwspinlock_driver = {
+- .probe = rcar_hwspinlock_probe,
+- .remove = rcar_hwspinlock_remove,
+- .driver = {
+- .name = "rcar_hwspinlock",
+- .of_match_table = rcar_hwspinlock_of_match,
+- },
+-};
+-
+-static int __init rcar_hwspinlock_init(void)
+-{
+- return platform_driver_register(&rcar_hwspinlock_driver);
+-}
+-core_initcall(rcar_hwspinlock_init);
+-
+-static void __exit rcar_hwspinlock_exit(void)
+-{
+- platform_driver_unregister(&rcar_hwspinlock_driver);
+-}
+-module_exit(rcar_hwspinlock_exit);
+-
+-MODULE_LICENSE("GPL v2");
+--
+1.9.1
+