diff options
| author | Sivaram Nair <sivaramn@nvidia.com> | 2016-08-24 19:18:46 -0400 |
|---|---|---|
| committer | mobile promotions <svcmobile_promotions@nvidia.com> | 2016-09-19 17:13:37 -0400 |
| commit | 21ffa7745fc8a7dc96cb364170b30bc943fa6b14 (patch) | |
| tree | 90c73359234b087848a0757366641732c66256a1 | |
| parent | 053cc09663cfa703d612ce20fba5aeac4cbddb7d (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.t18x | 1 | ||||
| -rw-r--r-- | drivers/reset/reset-fake.c | 75 |
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 @@ | |||
| 1 | obj-$(CONFIG_ARCH_TEGRA_18x_SOC) += tegra/ | 1 | obj-$(CONFIG_ARCH_TEGRA_18x_SOC) += tegra/ |
| 2 | obj-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 | |||
| 23 | static int fake_reset_op(struct reset_controller_dev *rcdev, unsigned long id) | ||
| 24 | { | ||
| 25 | return 0; | ||
| 26 | } | ||
| 27 | |||
| 28 | static struct reset_control_ops fake_reset_ops = { | ||
| 29 | .assert = fake_reset_op, | ||
| 30 | .deassert = fake_reset_op, | ||
| 31 | .reset = fake_reset_op, | ||
| 32 | }; | ||
| 33 | |||
| 34 | int 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 | |||
| 52 | static int fake_reset_probe(struct platform_device *pdev) | ||
| 53 | { | ||
| 54 | return register_fake_reset(512, pdev); | ||
| 55 | } | ||
| 56 | |||
| 57 | static const struct of_device_id fake_reset_match[] = { | ||
| 58 | { .compatible = "fake-resets" }, | ||
| 59 | { }, | ||
| 60 | }; | ||
| 61 | |||
| 62 | static 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 | |||
| 71 | static int __init fake_reset_driver_init(void) | ||
| 72 | { | ||
| 73 | return platform_driver_register(&fake_reset_driver); | ||
| 74 | } | ||
| 75 | arch_initcall(fake_reset_driver_init); | ||
