|
@@ -715,6 +715,7 @@ struct device_dma_parameters {
|
|
* @pins: For device pin management.
|
|
* @pins: For device pin management.
|
|
* See Documentation/pinctrl.txt for details.
|
|
* See Documentation/pinctrl.txt for details.
|
|
* @msi_list: Hosts MSI descriptors
|
|
* @msi_list: Hosts MSI descriptors
|
|
|
|
+ * @msi_domain: The generic MSI domain this device is using.
|
|
* @numa_node: NUMA node this device is close to.
|
|
* @numa_node: NUMA node this device is close to.
|
|
* @dma_mask: Dma mask (if dma'ble device).
|
|
* @dma_mask: Dma mask (if dma'ble device).
|
|
* @coherent_dma_mask: Like dma_mask, but for alloc_coherent mapping as not all
|
|
* @coherent_dma_mask: Like dma_mask, but for alloc_coherent mapping as not all
|
|
@@ -775,6 +776,9 @@ struct device {
|
|
struct dev_pm_info power;
|
|
struct dev_pm_info power;
|
|
struct dev_pm_domain *pm_domain;
|
|
struct dev_pm_domain *pm_domain;
|
|
|
|
|
|
|
|
+#ifdef CONFIG_GENERIC_MSI_IRQ_DOMAIN
|
|
|
|
+ struct irq_domain *msi_domain;
|
|
|
|
+#endif
|
|
#ifdef CONFIG_PINCTRL
|
|
#ifdef CONFIG_PINCTRL
|
|
struct dev_pin_info *pins;
|
|
struct dev_pin_info *pins;
|
|
#endif
|
|
#endif
|
|
@@ -865,6 +869,22 @@ static inline void set_dev_node(struct device *dev, int node)
|
|
}
|
|
}
|
|
#endif
|
|
#endif
|
|
|
|
|
|
|
|
+static inline struct irq_domain *dev_get_msi_domain(const struct device *dev)
|
|
|
|
+{
|
|
|
|
+#ifdef CONFIG_GENERIC_MSI_IRQ_DOMAIN
|
|
|
|
+ return dev->msi_domain;
|
|
|
|
+#else
|
|
|
|
+ return NULL;
|
|
|
|
+#endif
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+static inline void dev_set_msi_domain(struct device *dev, struct irq_domain *d)
|
|
|
|
+{
|
|
|
|
+#ifdef CONFIG_GENERIC_MSI_IRQ_DOMAIN
|
|
|
|
+ dev->msi_domain = d;
|
|
|
|
+#endif
|
|
|
|
+}
|
|
|
|
+
|
|
static inline void *dev_get_drvdata(const struct device *dev)
|
|
static inline void *dev_get_drvdata(const struct device *dev)
|
|
{
|
|
{
|
|
return dev->driver_data;
|
|
return dev->driver_data;
|