| /* | |
| * Copyright (c) 2016, NVIDIA CORPORATION. | |
| * | |
| * SPDX-License-Identifier: GPL-2.0 | |
| */ | |
| #include <common.h> | |
| #include <dm.h> | |
| #include <dm/lists.h> | |
| #include <dm/root.h> | |
| /** | |
| * The CAR exposes multiple different services. We create a sub-device for | |
| * each separate type of service, since each device must be of the appropriate | |
| * UCLASS. | |
| */ | |
| static int tegra_car_bpmp_bind(struct udevice *dev) | |
| { | |
| int ret; | |
| struct udevice *child; | |
| debug("%s(dev=%p)\n", __func__, dev); | |
| ret = device_bind_driver_to_node(dev, "tegra_car_clk", "tegra_car_clk", | |
| dev_ofnode(dev), &child); | |
| if (ret) | |
| return ret; | |
| ret = device_bind_driver_to_node(dev, "tegra_car_reset", | |
| "tegra_car_reset", dev_ofnode(dev), | |
| &child); | |
| if (ret) | |
| return ret; | |
| return 0; | |
| } | |
| static int tegra_car_bpmp_probe(struct udevice *dev) | |
| { | |
| debug("%s(dev=%p)\n", __func__, dev); | |
| return 0; | |
| } | |
| static int tegra_car_bpmp_remove(struct udevice *dev) | |
| { | |
| debug("%s(dev=%p)\n", __func__, dev); | |
| return 0; | |
| } | |
| static const struct udevice_id tegra_car_bpmp_ids[] = { | |
| { .compatible = "nvidia,tegra20-car" }, | |
| { .compatible = "nvidia,tegra30-car" }, | |
| { .compatible = "nvidia,tegra114-car" }, | |
| { .compatible = "nvidia,tegra124-car" }, | |
| { .compatible = "nvidia,tegra210-car" }, | |
| { } | |
| }; | |
| U_BOOT_DRIVER(tegra_car_bpmp) = { | |
| .name = "tegra_car", | |
| .id = UCLASS_MISC, | |
| .of_match = tegra_car_bpmp_ids, | |
| .bind = tegra_car_bpmp_bind, | |
| .probe = tegra_car_bpmp_probe, | |
| .remove = tegra_car_bpmp_remove, | |
| }; |