/* SPDX-License-Identifier: GPL-2.0 */ #ifndef __USB_TYPEC_ALTMODE_H__ #define __USB_TYPEC_ALTMODE_H__ #include <linux/usb/typec_altmode.h> #include <linux/usb/typec_mux.h> struct bus_type; struct altmode { unsigned int id; struct typec_altmode adev; struct typec_mux *mux; enum typec_port_data roles; struct attribute *attrs[5]; char group_name[8]; struct attribute_group group; const struct attribute_group *groups[2]; struct altmode *partner; struct altmode *plug[2]; }; #define to_altmode(d) container_of(d, struct altmode, adev) extern struct bus_type typec_bus; extern const struct device_type typec_altmode_dev_type; extern const struct device_type typec_port_dev_type; #define is_typec_altmode(_dev_) (_dev_->type == &typec_altmode_dev_type) #define is_typec_port(_dev_) (_dev_->type == &typec_port_dev_type) extern struct class typec_mux_class; struct typec_switch { struct device dev; typec_switch_set_fn_t set; }; struct typec_mux { struct device dev; typec_mux_set_fn_t set; }; #define to_typec_switch(_dev_) container_of(_dev_, struct typec_switch, dev) #define to_typec_mux(_dev_) container_of(_dev_, struct typec_mux, dev) #endif /* __USB_TYPEC_ALTMODE_H__ */