| /* SPDX-License-Identifier: GPL-2.0 */ | |
| /* | |
| * Copyright 2024 Google LLC | |
| */ | |
| #ifndef _ANDROID_USB_CONFIGFS_UEVENT_H | |
| #define _ANDROID_USB_CONFIGFS_UEVENT_H | |
| #ifdef CONFIG_ANDROID_USB_CONFIGFS_UEVENT | |
| #include <linux/device.h> | |
| #include <linux/workqueue.h> | |
| #include <linux/mutex.h> | |
| struct android_uevent_opts { | |
| struct device *dev; | |
| int device_id; | |
| bool connected; | |
| bool configured; | |
| bool sw_connected; | |
| struct work_struct work; | |
| struct ida function_ida; | |
| }; | |
| /** | |
| * android_create_function_device - creates a device within the android_usb | |
| * class with a new minor number. | |
| * @name: the name for the device which is to be created | |
| * @drvdata: the data to be added to the device for callbacks, can be NULL | |
| * @groups: NULL-terminated list of attribute groups to be created, can be NULL | |
| * | |
| * This should be called by function drivers which wish to register a device | |
| * within the android_usb class. | |
| * | |
| * Returns: a pointer to the newly created device upon success, or an ERR_PTR | |
| * for the encountered error. | |
| */ | |
| struct device *android_create_function_device(char *name, void *drvdata, | |
| const struct attribute_group **groups); | |
| /** | |
| * android_remove_function_device - destroys a device which was created by | |
| * calling android_create_function_device, and performs any necessary cleanup. | |
| * @dev: the device to be destroyed | |
| */ | |
| void android_remove_function_device(struct device *dev); | |
| #else | |
| struct android_uevent_opts {}; | |
| static inline struct device *android_create_function_device(char *name) | |
| { | |
| return ERR_PTR(-ENODEV); | |
| } | |
| static inline void android_remove_function_device(struct device *dev) | |
| { | |
| } | |
| #endif /* CONFIG_ANDROID_USB_CONFIGFS_UEVENT */ | |
| #endif /* _ANDROID_USB_CONFIGFS_UEVENT_H */ |