1 | /* SPDX-License-Identifier: GPL-2.0-only */ |
2 | /* |
3 | * Copyright (C) ST-Ericsson SA 2011 |
4 | * Author: Lee Jones <lee.jones@linaro.org> for ST-Ericsson. |
5 | */ |
6 | #ifndef __SOC_BUS_H |
7 | #define __SOC_BUS_H |
8 | |
9 | #include <linux/device.h> |
10 | |
11 | struct soc_device_attribute { |
12 | const char *machine; |
13 | const char *family; |
14 | const char *revision; |
15 | const char *serial_number; |
16 | const char *soc_id; |
17 | const void *data; |
18 | const struct attribute_group *custom_attr_group; |
19 | }; |
20 | |
21 | /** |
22 | * soc_device_register - register SoC as a device |
23 | * @soc_plat_dev_attr: Attributes passed from platform to be attributed to a SoC |
24 | */ |
25 | struct soc_device *soc_device_register( |
26 | struct soc_device_attribute *soc_plat_dev_attr); |
27 | |
28 | /** |
29 | * soc_device_unregister - unregister SoC device |
30 | * @dev: SoC device to be unregistered |
31 | */ |
32 | void soc_device_unregister(struct soc_device *soc_dev); |
33 | |
34 | /** |
35 | * soc_device_to_device - helper function to fetch struct device |
36 | * @soc: Previously registered SoC device container |
37 | */ |
38 | struct device *soc_device_to_device(struct soc_device *soc); |
39 | |
40 | #ifdef CONFIG_SOC_BUS |
41 | const struct soc_device_attribute *soc_device_match( |
42 | const struct soc_device_attribute *matches); |
43 | #else |
44 | static inline const struct soc_device_attribute *soc_device_match( |
45 | const struct soc_device_attribute *matches) { return NULL; } |
46 | #endif |
47 | |
48 | #endif /* __SOC_BUS_H */ |
49 | |