diff options
author | Thuy Tran <thuy.tran.xh@rvc.renesas.com> | 2017-12-23 11:16:02 +0700 |
---|---|---|
committer | Thuy Tran <thuy.tran.xh@rvc.renesas.com> | 2018-01-30 10:00:50 +0700 |
commit | f86189b4063883c3fb50bc4561960515feff836f (patch) | |
tree | 5079c634189a48f94bd5c8dfe6b581224829077c /meta-rcar-gen3/recipes-kernel/linux/linux-renesas/0017-Revert-Revert-hwspinlock-rcar-Add-support-for-R-Car-.patch | |
parent | 7acbf5e2f99c59478adbc73c6a40d314589a3009 (diff) |
rcar-gen3: linux-renesas: Upgrade Linux BSP to v3.6.0
This commit upgrades Linux BSP to v3.6.0 for supporting
Kernel v4.14 stable and updating following items:
[Kernel]
- Add support for WDIOF_CARDRESET.
[Power Management]
- Add missing iounmap to rcar_avs.c.
- Add big.LITTLE CAS support.
- Add CA53 CPUIdle support.
- Add CA53 EMS support.
- Add CA53 CPUFreq support.
[Audio driver]
- Confirm rmmod command operation of snd-soc-rcar.
- Skip disabled-SSI nodes.
- Care ssi_parent_mod and remove NULL check from
rsnd_mod_name()/rsnd_mod_id().
- Revert IOMMU support so far.
- Don't use runtime->sample_bits.
- More clear rsnd_get_dalign() for DALIGN.
- Clear SSI_MODE for non TDM Extended modes.
[Display driver]
- Confirm the Fence function.
- Add support for colorkey alpha blending.
- Disable vsp1 interrupt when startup.
[DMA Engine driver]
- Fix array-bounds warning refer chcr_ts[].
[PWM driver]
- Enable PWM2 in device tree.
[USB2.0 Function]
- Fix the problem that the interrupt becomes long time when
disconnecting the USB cable.
[Video Capture driver]
- Add V4L2_FIELD_SEQ_TB/BT function support.
- Add ARGB8888 caputre format support and overflow debug message
option.
- Fix cropping procedure.
[RWDT driver]
- Add support for WDIOF_CARDRESET.
Signed-off-by: Thuy Tran <thuy.tran.xh@rvc.renesas.com>
Signed-off-by: Takamitsu Honda <takamitsu.honda.pv@renesas.com>
Diffstat (limited to 'meta-rcar-gen3/recipes-kernel/linux/linux-renesas/0017-Revert-Revert-hwspinlock-rcar-Add-support-for-R-Car-.patch')
-rw-r--r-- | meta-rcar-gen3/recipes-kernel/linux/linux-renesas/0017-Revert-Revert-hwspinlock-rcar-Add-support-for-R-Car-.patch | 214 |
1 files changed, 0 insertions, 214 deletions
diff --git a/meta-rcar-gen3/recipes-kernel/linux/linux-renesas/0017-Revert-Revert-hwspinlock-rcar-Add-support-for-R-Car-.patch b/meta-rcar-gen3/recipes-kernel/linux/linux-renesas/0017-Revert-Revert-hwspinlock-rcar-Add-support-for-R-Car-.patch deleted file mode 100644 index a4f0744..0000000 --- a/meta-rcar-gen3/recipes-kernel/linux/linux-renesas/0017-Revert-Revert-hwspinlock-rcar-Add-support-for-R-Car-.patch +++ /dev/null @@ -1,214 +0,0 @@ -From d10a3b0e5170ebe5350342c3e36902ff3624f2b1 Mon Sep 17 00:00:00 2001 -From: Hiroki Negishi <hiroki.negishi.bx@renesas.com> -Date: Mon, 13 Nov 2017 11:58:51 +0900 -Subject: [PATCH 17/23] Revert "Revert "hwspinlock: rcar: Add support for R-Car - Gen3 Hardware Spinlock"" - -This reverts commit b960f2c58f30 ("Revert "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 | 156 +++++++++++++++++++++++++++++++++++ - 3 files changed, 170 insertions(+) - create mode 100644 drivers/hwspinlock/rcar_hwspinlock.c - -diff --git a/drivers/hwspinlock/Kconfig b/drivers/hwspinlock/Kconfig -index 73a4016..f0c0a35 100644 ---- a/drivers/hwspinlock/Kconfig -+++ b/drivers/hwspinlock/Kconfig -@@ -53,4 +53,17 @@ 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 6b59cb5a..4ee4001 100644 ---- a/drivers/hwspinlock/Makefile -+++ b/drivers/hwspinlock/Makefile -@@ -6,4 +6,5 @@ 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 -new file mode 100644 -index 0000000..35ba8c1 ---- /dev/null -+++ b/drivers/hwspinlock/rcar_hwspinlock.c -@@ -0,0 +1,156 @@ -+/* -+ * rcar_hwspinlock.c -+ * -+ * Copyright (C) 2016 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/clk.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 "hwspinlock_internal.h" -+ -+#define RCAR_HWSPINLOCK_NUM (8) -+ -+static int rcar_hwspinlock_trylock(struct hwspinlock *lock) -+{ -+ void __iomem *addr = lock->priv; -+ -+ return !ioread32(addr); -+} -+ -+static void rcar_hwspinlock_unlock(struct hwspinlock *lock) -+{ -+ void __iomem *addr = lock->priv; -+ -+ iowrite32(0, addr); -+} -+ -+static const struct hwspinlock_ops rcar_hwspinlock_ops = { -+ .trylock = rcar_hwspinlock_trylock, -+ .unlock = rcar_hwspinlock_unlock, -+}; -+ -+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 idx; -+ int ret = 0; -+ u32 __iomem *addr; -+ struct hwspinlock_device *bank; -+ struct hwspinlock *lock; -+ struct resource *res = NULL; -+ struct clk *clock; -+ -+ /* enable MFIS clock */ -+ clock = of_clk_get(pdev->dev.of_node, 0); -+ if (!clock) { -+ dev_err(&pdev->dev, "Failed to get clock.\n"); -+ ret = PTR_ERR(clock); -+ goto out; -+ } -+ clk_prepare_enable(clock); -+ -+ pm_runtime_enable(&pdev->dev); -+ -+ /* map MFIS register */ -+ res = platform_get_resource(pdev, IORESOURCE_MEM, 0); -+ addr = (u32 __iomem *)devm_ioremap_nocache(&pdev->dev, -+ res->start, resource_size(res)); -+ if (IS_ERR(addr)) { -+ dev_err(&pdev->dev, "Failed to remap MFIS Lock register.\n"); -+ ret = PTR_ERR(addr); -+ goto clk_disable; -+ } -+ -+ /* create hwspinlock control info */ -+ bank = devm_kzalloc(&pdev->dev, -+ sizeof(*bank) + sizeof(*lock) * RCAR_HWSPINLOCK_NUM, -+ GFP_KERNEL); -+ if (!bank) { -+ dev_err(&pdev->dev, "Failed to allocate memory.\n"); -+ ret = PTR_ERR(bank); -+ goto clk_disable; -+ } -+ -+ for (idx = 0; idx < RCAR_HWSPINLOCK_NUM; idx++) { -+ lock = &bank->lock[idx]; -+ lock->priv = &addr[idx]; -+ } -+ platform_set_drvdata(pdev, bank); -+ -+ /* register hwspinlock */ -+ ret = hwspin_lock_register(bank, &pdev->dev, &rcar_hwspinlock_ops, -+ 0, RCAR_HWSPINLOCK_NUM); -+ if (!ret) -+ goto out; -+ -+clk_disable: -+ if (clock) -+ clk_disable_unprepare(clock); -+ -+out: -+ return ret; -+} -+ -+static int rcar_hwspinlock_remove(struct platform_device *pdev) -+{ -+ int ret; -+ struct clk *clock = NULL; -+ -+ 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); -+ clock = of_clk_get(pdev->dev.of_node, 0); -+ if (clock) -+ clk_disable_unprepare(clock); -+ -+ 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 - |