diff options
author | Thierry Reding <treding@nvidia.com> | 2014-07-16 08:01:44 -0400 |
---|---|---|
committer | Thierry Reding <treding@nvidia.com> | 2014-07-17 08:58:41 -0400 |
commit | a2686766c81e18fb1ab9375cf5d3cbd54a3bed2c (patch) | |
tree | 230cbea98cf8173dbf40ce7b994dce83fe56ed3b | |
parent | dd849e581d7d23e1729c23bb2d6b85360ce4dd9d (diff) |
soc/tegra: Implement runtime check for Tegra SoCs
Subsequent patches will move some of the initialization code from SoC
setup code to regular initcalls. To prevent breakage on other SoCs in
multi-platform builds, these initcalls need to check that they indeed
run on Tegra.
Signed-off-by: Thierry Reding <treding@nvidia.com>
-rw-r--r-- | drivers/soc/tegra/Makefile | 2 | ||||
-rw-r--r-- | drivers/soc/tegra/common.c | 30 | ||||
-rw-r--r-- | include/soc/tegra/common.h | 14 |
3 files changed, 46 insertions, 0 deletions
diff --git a/drivers/soc/tegra/Makefile b/drivers/soc/tegra/Makefile index 236600f91bb3..db34987ed9dc 100644 --- a/drivers/soc/tegra/Makefile +++ b/drivers/soc/tegra/Makefile | |||
@@ -1 +1,3 @@ | |||
1 | obj-$(CONFIG_ARCH_TEGRA) += fuse/ | 1 | obj-$(CONFIG_ARCH_TEGRA) += fuse/ |
2 | |||
3 | obj-$(CONFIG_ARCH_TEGRA) += common.o | ||
diff --git a/drivers/soc/tegra/common.c b/drivers/soc/tegra/common.c new file mode 100644 index 000000000000..a71cb74f3674 --- /dev/null +++ b/drivers/soc/tegra/common.c | |||
@@ -0,0 +1,30 @@ | |||
1 | /* | ||
2 | * Copyright (C) 2014 NVIDIA CORPORATION. All rights reserved. | ||
3 | * | ||
4 | * This program is free software; you can redistribute it and/or modify | ||
5 | * it under the terms of the GNU General Public License version 2 as | ||
6 | * published by the Free Software Foundation. | ||
7 | */ | ||
8 | |||
9 | #include <linux/of.h> | ||
10 | |||
11 | #include <soc/tegra/common.h> | ||
12 | |||
13 | static const struct of_device_id tegra_machine_match[] = { | ||
14 | { .compatible = "nvidia,tegra20", }, | ||
15 | { .compatible = "nvidia,tegra30", }, | ||
16 | { .compatible = "nvidia,tegra114", }, | ||
17 | { .compatible = "nvidia,tegra124", }, | ||
18 | { } | ||
19 | }; | ||
20 | |||
21 | bool soc_is_tegra(void) | ||
22 | { | ||
23 | struct device_node *root; | ||
24 | |||
25 | root = of_find_node_by_path("/"); | ||
26 | if (!root) | ||
27 | return false; | ||
28 | |||
29 | return of_match_node(tegra_machine_match, root) != NULL; | ||
30 | } | ||
diff --git a/include/soc/tegra/common.h b/include/soc/tegra/common.h new file mode 100644 index 000000000000..fc13a9a134e9 --- /dev/null +++ b/include/soc/tegra/common.h | |||
@@ -0,0 +1,14 @@ | |||
1 | /* | ||
2 | * Copyright (C) 2014 NVIDIA Corporation | ||
3 | * | ||
4 | * This program is free software; you can redistribute it and/or modify | ||
5 | * it under the terms of the GNU General Public License version 2 as | ||
6 | * published by the Free Software Foundation. | ||
7 | */ | ||
8 | |||
9 | #ifndef __SOC_TEGRA_COMMON_H__ | ||
10 | #define __SOC_TEGRA_COMMON_H__ | ||
11 | |||
12 | bool soc_is_tegra(void); | ||
13 | |||
14 | #endif /* __SOC_TEGRA_COMMON_H__ */ | ||