|  | /* SPDX-License-Identifier: GPL-2.0-only */ | 
|  | /* | 
|  | * Copyright (C) ST-Ericsson SA 2011 | 
|  | * Author: Lee Jones <lee.jones@linaro.org> for ST-Ericsson. | 
|  | */ | 
|  | #ifndef __SOC_BUS_H | 
|  | #define __SOC_BUS_H | 
|  |  | 
|  | #include <linux/device.h> | 
|  |  | 
|  | struct soc_device_attribute { | 
|  | const char *machine; | 
|  | const char *family; | 
|  | const char *revision; | 
|  | const char *serial_number; | 
|  | const char *soc_id; | 
|  | const void *data; | 
|  | const struct attribute_group *custom_attr_group; | 
|  | }; | 
|  |  | 
|  | /** | 
|  | * soc_device_register - register SoC as a device | 
|  | * @soc_plat_dev_attr: Attributes passed from platform to be attributed to a SoC | 
|  | */ | 
|  | struct soc_device *soc_device_register( | 
|  | struct soc_device_attribute *soc_plat_dev_attr); | 
|  |  | 
|  | /** | 
|  | * soc_device_unregister - unregister SoC device | 
|  | * @dev: SoC device to be unregistered | 
|  | */ | 
|  | void soc_device_unregister(struct soc_device *soc_dev); | 
|  |  | 
|  | /** | 
|  | * soc_device_to_device - helper function to fetch struct device | 
|  | * @soc: Previously registered SoC device container | 
|  | */ | 
|  | struct device *soc_device_to_device(struct soc_device *soc); | 
|  |  | 
|  | #ifdef CONFIG_SOC_BUS | 
|  | const struct soc_device_attribute *soc_device_match( | 
|  | const struct soc_device_attribute *matches); | 
|  | #else | 
|  | static inline const struct soc_device_attribute *soc_device_match( | 
|  | const struct soc_device_attribute *matches) { return NULL; } | 
|  | #endif | 
|  |  | 
|  | #endif /* __SOC_BUS_H */ |