]>
Commit | Line | Data |
---|---|---|
57251285 SG |
1 | /* |
2 | * Copyright (c) 2015 Google, Inc | |
3 | * Written by Simon Glass <sjg@chromium.org> | |
4 | * | |
5 | * SPDX-License-Identifier: GPL-2.0+ | |
6 | */ | |
7 | ||
8 | #ifndef __SYSCON_H | |
9 | #define __SYSCON_H | |
10 | ||
11 | /** | |
12 | * struct syscon_uc_info - Information stored by the syscon UCLASS_UCLASS | |
13 | * | |
14 | * @regmap: Register map for this controller | |
15 | */ | |
16 | struct syscon_uc_info { | |
17 | struct regmap *regmap; | |
18 | }; | |
19 | ||
20 | /* So far there are no ops so this is a placeholder */ | |
21 | struct syscon_ops { | |
22 | }; | |
23 | ||
24 | #define syscon_get_ops(dev) ((struct syscon_ops *)(dev)->driver->ops) | |
25 | ||
04ecf36b SG |
26 | #if CONFIG_IS_ENABLED(OF_PLATDATA) |
27 | /* | |
28 | * We don't support 64-bit machines. If they are so resource-contrained that | |
29 | * they need to use OF_PLATDATA, something is horribly wrong with the | |
30 | * education of our hardware engineers. | |
31 | */ | |
32 | struct syscon_base_platdata { | |
33 | u32 reg[2]; | |
34 | }; | |
35 | #endif | |
36 | ||
57251285 SG |
37 | /** |
38 | * syscon_get_regmap() - Get access to a register map | |
39 | * | |
40 | * @dev: Device to check (UCLASS_SCON) | |
41 | * @info: Returns regmap for the device | |
42 | * @return 0 if OK, -ve on error | |
43 | */ | |
44 | struct regmap *syscon_get_regmap(struct udevice *dev); | |
45 | ||
ac94b7bc SG |
46 | /** |
47 | * syscon_get_regmap_by_driver_data() - Look up a controller by its ID | |
48 | * | |
49 | * Each system controller can be accessed by its driver data, which is | |
50 | * assumed to be unique through the scope of all system controllers that | |
51 | * are in use. This function looks up the controller given this driver data. | |
52 | * | |
53 | * @driver_data: Driver data value to look up | |
54 | * @devp: Returns the controller correponding to @driver_data | |
55 | * @return 0 on success, -ENODEV if the ID was not found, or other -ve error | |
56 | * code | |
57 | */ | |
58 | int syscon_get_by_driver_data(ulong driver_data, struct udevice **devp); | |
59 | ||
57251285 SG |
60 | /** |
61 | * syscon_get_regmap_by_driver_data() - Look up a controller by its ID | |
62 | * | |
63 | * Each system controller can be accessed by its driver data, which is | |
64 | * assumed to be unique through the scope of all system controllers that | |
65 | * are in use. This function looks up the regmap given this driver data. | |
66 | * | |
67 | * @driver_data: Driver data value to look up | |
68 | * @return register map correponding to @driver_data, or -ve error code | |
69 | */ | |
70 | struct regmap *syscon_get_regmap_by_driver_data(ulong driver_data); | |
71 | ||
72 | /** | |
73 | * syscon_get_first_range() - get the first memory range from a syscon regmap | |
74 | * | |
75 | * @driver_data: Driver data value to look up | |
76 | * @return first region of register map correponding to @driver_data, or | |
77 | * -ve error code | |
78 | */ | |
79 | void *syscon_get_first_range(ulong driver_data); | |
80 | ||
81 | #endif |