summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSivaram Nair <sivaramn@nvidia.com>2016-08-24 19:18:46 -0400
committermobile promotions <svcmobile_promotions@nvidia.com>2016-09-19 17:13:37 -0400
commit21ffa7745fc8a7dc96cb364170b30bc943fa6b14 (patch)
tree90c73359234b087848a0757366641732c66256a1
parent053cc09663cfa703d612ce20fba5aeac4cbddb7d (diff)
reset: tegra: add fake reset provider
Bug 1787987 Change-Id: I54e43bfc56e807be00e877c7cb569af8ce374bd4 Signed-off-by: Sivaram Nair <sivaramn@nvidia.com> Reviewed-on: http://git-master/r/1209435 Reviewed-by: Automatic_Commit_Validation_User Reviewed-by: Timo Alho <talho@nvidia.com> GVS: Gerrit_Virtual_Submit
-rw-r--r--drivers/reset/Makefile.t18x1
-rw-r--r--drivers/reset/reset-fake.c75
2 files changed, 76 insertions, 0 deletions
diff --git a/drivers/reset/Makefile.t18x b/drivers/reset/Makefile.t18x
index 4dd624eef..94a640234 100644
--- a/drivers/reset/Makefile.t18x
+++ b/drivers/reset/Makefile.t18x
@@ -1 +1,2 @@
1obj-$(CONFIG_ARCH_TEGRA_18x_SOC) += tegra/ 1obj-$(CONFIG_ARCH_TEGRA_18x_SOC) += tegra/
2obj-y += reset-fake.o
diff --git a/drivers/reset/reset-fake.c b/drivers/reset/reset-fake.c
new file mode 100644
index 000000000..9a7a998ab
--- /dev/null
+++ b/drivers/reset/reset-fake.c
@@ -0,0 +1,75 @@
1/*
2 * Copyright (c) 2016, NVIDIA CORPORATION. All rights reserved.
3 *
4 * This program is free software; you can redistribute it and/or modify it
5 * under the terms and conditions of the GNU General Public License,
6 * version 2, as published by the Free Software Foundation.
7 *
8 * This program is distributed in the hope it will be useful, but WITHOUT
9 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
10 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
11 * more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 */
16
17#include <linux/module.h>
18#include <linux/of.h>
19#include <linux/platform_device.h>
20#include <linux/reset-controller.h>
21#include <linux/slab.h>
22
23static int fake_reset_op(struct reset_controller_dev *rcdev, unsigned long id)
24{
25 return 0;
26}
27
28static struct reset_control_ops fake_reset_ops = {
29 .assert = fake_reset_op,
30 .deassert = fake_reset_op,
31 .reset = fake_reset_op,
32};
33
34int register_fake_reset(int num_resets, struct platform_device *pdev)
35{
36 struct reset_controller_dev *rcdev;
37
38 rcdev = devm_kzalloc(&pdev->dev, sizeof(*rcdev), GFP_KERNEL);
39 if (!rcdev)
40 return -ENOMEM;
41
42 rcdev->owner = THIS_MODULE;
43 rcdev->nr_resets = num_resets;
44 rcdev->ops = &fake_reset_ops;
45 rcdev->of_node = pdev->dev.of_node;
46
47 dev_info(&pdev->dev, "registered %d fake resets\n", num_resets);
48
49 return reset_controller_register(rcdev);
50}
51
52static int fake_reset_probe(struct platform_device *pdev)
53{
54 return register_fake_reset(512, pdev);
55}
56
57static const struct of_device_id fake_reset_match[] = {
58 { .compatible = "fake-resets" },
59 { },
60};
61
62static struct platform_driver fake_reset_driver = {
63 .probe = fake_reset_probe,
64 .driver = {
65 .name = "fake-reset",
66 .owner = THIS_MODULE,
67 .of_match_table = fake_reset_match,
68 },
69};
70
71static int __init fake_reset_driver_init(void)
72{
73 return platform_driver_register(&fake_reset_driver);
74}
75arch_initcall(fake_reset_driver_init);