]> git.sur5r.net Git - u-boot/blob - drivers/power/domain/sandbox-power-domain.c
mtd: nand: mxs_nand: use structure for BCH geometry
[u-boot] / drivers / power / domain / sandbox-power-domain.c
1 // SPDX-License-Identifier: GPL-2.0
2 /*
3  * Copyright (c) 2016, NVIDIA CORPORATION.
4  */
5
6 #include <common.h>
7 #include <dm.h>
8 #include <power-domain-uclass.h>
9 #include <asm/io.h>
10 #include <asm/power-domain.h>
11
12 #define SANDBOX_POWER_DOMAINS 3
13
14 struct sandbox_power_domain {
15         bool on[SANDBOX_POWER_DOMAINS];
16 };
17
18 static int sandbox_power_domain_request(struct power_domain *power_domain)
19 {
20         debug("%s(power_domain=%p)\n", __func__, power_domain);
21
22         if (power_domain->id >= SANDBOX_POWER_DOMAINS)
23                 return -EINVAL;
24
25         return 0;
26 }
27
28 static int sandbox_power_domain_free(struct power_domain *power_domain)
29 {
30         debug("%s(power_domain=%p)\n", __func__, power_domain);
31
32         return 0;
33 }
34
35 static int sandbox_power_domain_on(struct power_domain *power_domain)
36 {
37         struct sandbox_power_domain *sbr = dev_get_priv(power_domain->dev);
38
39         debug("%s(power_domain=%p)\n", __func__, power_domain);
40
41         sbr->on[power_domain->id] = true;
42
43         return 0;
44 }
45
46 static int sandbox_power_domain_off(struct power_domain *power_domain)
47 {
48         struct sandbox_power_domain *sbr = dev_get_priv(power_domain->dev);
49
50         debug("%s(power_domain=%p)\n", __func__, power_domain);
51
52         sbr->on[power_domain->id] = false;
53
54         return 0;
55 }
56
57 static int sandbox_power_domain_bind(struct udevice *dev)
58 {
59         debug("%s(dev=%p)\n", __func__, dev);
60
61         return 0;
62 }
63
64 static int sandbox_power_domain_probe(struct udevice *dev)
65 {
66         debug("%s(dev=%p)\n", __func__, dev);
67
68         return 0;
69 }
70
71 static const struct udevice_id sandbox_power_domain_ids[] = {
72         { .compatible = "sandbox,power-domain" },
73         { }
74 };
75
76 struct power_domain_ops sandbox_power_domain_ops = {
77         .request = sandbox_power_domain_request,
78         .free = sandbox_power_domain_free,
79         .on = sandbox_power_domain_on,
80         .off = sandbox_power_domain_off,
81 };
82
83 U_BOOT_DRIVER(sandbox_power_domain) = {
84         .name = "sandbox_power_domain",
85         .id = UCLASS_POWER_DOMAIN,
86         .of_match = sandbox_power_domain_ids,
87         .bind = sandbox_power_domain_bind,
88         .probe = sandbox_power_domain_probe,
89         .priv_auto_alloc_size = sizeof(struct sandbox_power_domain),
90         .ops = &sandbox_power_domain_ops,
91 };
92
93 int sandbox_power_domain_query(struct udevice *dev, unsigned long id)
94 {
95         struct sandbox_power_domain *sbr = dev_get_priv(dev);
96
97         debug("%s(dev=%p, id=%ld)\n", __func__, dev, id);
98
99         if (id >= SANDBOX_POWER_DOMAINS)
100                 return -EINVAL;
101
102         return sbr->on[id];
103 }