diff options
Diffstat (limited to 'include/linux')
-rw-r--r-- | include/linux/alcor_pci.h | 1 | ||||
-rw-r--r-- | include/linux/extcon.h | 30 | ||||
-rw-r--r-- | include/linux/interconnect-provider.h | 14 | ||||
-rw-r--r-- | include/linux/soundwire/sdw.h | 4 | ||||
-rw-r--r-- | include/linux/soundwire/sdw_intel.h | 11 |
5 files changed, 44 insertions, 16 deletions
diff --git a/include/linux/alcor_pci.h b/include/linux/alcor_pci.h index 4416df597526..8274ed525e9f 100644 --- a/include/linux/alcor_pci.h +++ b/include/linux/alcor_pci.h @@ -17,6 +17,7 @@ #define PCI_ID_ALCOR_MICRO 0x1AEA #define PCI_ID_AU6601 0x6601 #define PCI_ID_AU6621 0x6621 +#define PCI_ID_AU6625 0x6625 #define MHZ_TO_HZ(freq) ((freq) * 1000 * 1000) diff --git a/include/linux/extcon.h b/include/linux/extcon.h index 2bdf643d8593..1b1d77ec2114 100644 --- a/include/linux/extcon.h +++ b/include/linux/extcon.h @@ -170,7 +170,7 @@ struct extcon_dev; * Following APIs get the connected state of each external connector. * The 'id' argument indicates the defined external connector. */ -extern int extcon_get_state(struct extcon_dev *edev, unsigned int id); +int extcon_get_state(struct extcon_dev *edev, unsigned int id); /* * Following APIs get the property of each external connector. @@ -181,10 +181,10 @@ extern int extcon_get_state(struct extcon_dev *edev, unsigned int id); * for each external connector. They are used to get the capability of the * property of each external connector based on the id and property. */ -extern int extcon_get_property(struct extcon_dev *edev, unsigned int id, +int extcon_get_property(struct extcon_dev *edev, unsigned int id, unsigned int prop, union extcon_property_value *prop_val); -extern int extcon_get_property_capability(struct extcon_dev *edev, +int extcon_get_property_capability(struct extcon_dev *edev, unsigned int id, unsigned int prop); /* @@ -196,38 +196,38 @@ extern int extcon_get_property_capability(struct extcon_dev *edev, * extcon_register_notifier_all(*edev, *nb) : Register a notifier block * for all supported external connectors of the extcon. */ -extern int extcon_register_notifier(struct extcon_dev *edev, unsigned int id, +int extcon_register_notifier(struct extcon_dev *edev, unsigned int id, struct notifier_block *nb); -extern int extcon_unregister_notifier(struct extcon_dev *edev, unsigned int id, +int extcon_unregister_notifier(struct extcon_dev *edev, unsigned int id, struct notifier_block *nb); -extern int devm_extcon_register_notifier(struct device *dev, +int devm_extcon_register_notifier(struct device *dev, struct extcon_dev *edev, unsigned int id, struct notifier_block *nb); -extern void devm_extcon_unregister_notifier(struct device *dev, +void devm_extcon_unregister_notifier(struct device *dev, struct extcon_dev *edev, unsigned int id, struct notifier_block *nb); -extern int extcon_register_notifier_all(struct extcon_dev *edev, +int extcon_register_notifier_all(struct extcon_dev *edev, struct notifier_block *nb); -extern int extcon_unregister_notifier_all(struct extcon_dev *edev, +int extcon_unregister_notifier_all(struct extcon_dev *edev, struct notifier_block *nb); -extern int devm_extcon_register_notifier_all(struct device *dev, +int devm_extcon_register_notifier_all(struct device *dev, struct extcon_dev *edev, struct notifier_block *nb); -extern void devm_extcon_unregister_notifier_all(struct device *dev, +void devm_extcon_unregister_notifier_all(struct device *dev, struct extcon_dev *edev, struct notifier_block *nb); /* * Following APIs get the extcon_dev from devicetree or by through extcon name. */ -extern struct extcon_dev *extcon_get_extcon_dev(const char *extcon_name); -extern struct extcon_dev *extcon_find_edev_by_node(struct device_node *node); -extern struct extcon_dev *extcon_get_edev_by_phandle(struct device *dev, +struct extcon_dev *extcon_get_extcon_dev(const char *extcon_name); +struct extcon_dev *extcon_find_edev_by_node(struct device_node *node); +struct extcon_dev *extcon_get_edev_by_phandle(struct device *dev, int index); /* Following API get the name of extcon device. */ -extern const char *extcon_get_edev_name(struct extcon_dev *edev); +const char *extcon_get_edev_name(struct extcon_dev *edev); #else /* CONFIG_EXTCON */ static inline int extcon_get_state(struct extcon_dev *edev, unsigned int id) diff --git a/include/linux/interconnect-provider.h b/include/linux/interconnect-provider.h index b16f9effa555..0c494534b4d3 100644 --- a/include/linux/interconnect-provider.h +++ b/include/linux/interconnect-provider.h @@ -92,17 +92,26 @@ struct icc_node { #if IS_ENABLED(CONFIG_INTERCONNECT) +int icc_std_aggregate(struct icc_node *node, u32 tag, u32 avg_bw, + u32 peak_bw, u32 *agg_avg, u32 *agg_peak); struct icc_node *icc_node_create(int id); void icc_node_destroy(int id); int icc_link_create(struct icc_node *node, const int dst_id); int icc_link_destroy(struct icc_node *src, struct icc_node *dst); void icc_node_add(struct icc_node *node, struct icc_provider *provider); void icc_node_del(struct icc_node *node); +int icc_nodes_remove(struct icc_provider *provider); int icc_provider_add(struct icc_provider *provider); int icc_provider_del(struct icc_provider *provider); #else +static inline int icc_std_aggregate(struct icc_node *node, u32 tag, u32 avg_bw, + u32 peak_bw, u32 *agg_avg, u32 *agg_peak) +{ + return -ENOTSUPP; +} + static inline struct icc_node *icc_node_create(int id) { return ERR_PTR(-ENOTSUPP); @@ -130,6 +139,11 @@ void icc_node_del(struct icc_node *node) { } +static inline int icc_nodes_remove(struct icc_provider *provider) +{ + return -ENOTSUPP; +} + static inline int icc_provider_add(struct icc_provider *provider) { return -ENOTSUPP; diff --git a/include/linux/soundwire/sdw.h b/include/linux/soundwire/sdw.h index b7c9eca4332a..b451bb622335 100644 --- a/include/linux/soundwire/sdw.h +++ b/include/linux/soundwire/sdw.h @@ -546,7 +546,8 @@ struct sdw_slave_ops { * @debugfs: Slave debugfs * @node: node for bus list * @port_ready: Port ready completion flag for each Slave port - * @dev_num: Device Number assigned by Bus + * @dev_num: Current Device Number, values can be 0 or dev_num_sticky + * @dev_num_sticky: one-time static Device Number assigned by Bus * @probed: boolean tracking driver state * @probe_complete: completion utility to control potential races * on startup between driver probe/initialization and SoundWire @@ -575,6 +576,7 @@ struct sdw_slave { struct list_head node; struct completion *port_ready; u16 dev_num; + u16 dev_num_sticky; bool probed; struct completion probe_complete; struct completion enumeration_complete; diff --git a/include/linux/soundwire/sdw_intel.h b/include/linux/soundwire/sdw_intel.h index 93b83bdf8035..979b41b5dcb4 100644 --- a/include/linux/soundwire/sdw_intel.h +++ b/include/linux/soundwire/sdw_intel.h @@ -5,6 +5,7 @@ #define __SDW_INTEL_H #include <linux/irqreturn.h> +#include <linux/soundwire/sdw.h> /** * struct sdw_intel_stream_params_data: configuration passed during @@ -93,6 +94,11 @@ struct sdw_intel_link_res; */ #define SDW_INTEL_CLK_STOP_BUS_RESET BIT(3) +struct sdw_intel_slave_id { + int link_id; + struct sdw_slave_id id; +}; + /** * struct sdw_intel_ctx - context allocated by the controller * driver probe @@ -101,9 +107,12 @@ struct sdw_intel_link_res; * hardware capabilities after all power dependencies are settled. * @link_mask: bit-wise mask listing SoundWire links reported by the * Controller + * @num_slaves: total number of devices exposed across all enabled links * @handle: ACPI parent handle * @links: information for each link (controller-specific and kept * opaque here) + * @ids: array of slave_id, representing Slaves exposed across all enabled + * links * @link_list: list to handle interrupts across all links * @shim_lock: mutex to handle concurrent rmw access to shared SHIM registers. */ @@ -111,8 +120,10 @@ struct sdw_intel_ctx { int count; void __iomem *mmio_base; u32 link_mask; + int num_slaves; acpi_handle handle; struct sdw_intel_link_res *links; + struct sdw_intel_slave_id *ids; struct list_head link_list; struct mutex shim_lock; /* lock for access to shared SHIM registers */ }; |