Displaying 17 results from an estimated 17 matches for "msi_write_message".
2014 Jul 30
4
[RFC PATCH 00/11] Refactor MSI to support Non-PCI device
...*msi, struct msix_entry *entries);
>> u32 (*msi_mask_irq)(struct msi_desc *desc, u32 mask, u32 flag);
>> u32 (*msix_mask_irq)(struct msi_desc *desc, u32 flag);
>> void (*msi_read_message)(struct msi_desc *desc, struct msi_msg *msg);
>> void (*msi_write_message)(struct msi_desc *desc, struct msi_msg *msg);
>> void (*msi_set_intx)(struct msi_irqs *msi, int enable);
>> };
>> struct msi_ops provides several hook functions, generic MSI driver will call
>> the hook functions to access device specific registers. PCI devices will...
2014 Jul 30
4
[RFC PATCH 00/11] Refactor MSI to support Non-PCI device
...*msi, struct msix_entry *entries);
>> u32 (*msi_mask_irq)(struct msi_desc *desc, u32 mask, u32 flag);
>> u32 (*msix_mask_irq)(struct msi_desc *desc, u32 flag);
>> void (*msi_read_message)(struct msi_desc *desc, struct msi_msg *msg);
>> void (*msi_write_message)(struct msi_desc *desc, struct msi_msg *msg);
>> void (*msi_set_intx)(struct msi_irqs *msi, int enable);
>> };
>> struct msi_ops provides several hook functions, generic MSI driver will call
>> the hook functions to access device specific registers. PCI devices will...
2014 Jul 30
0
[RFC PATCH 00/11] Refactor MSI to support Non-PCI device
...s);
>>>> u32 (*msi_mask_irq)(struct msi_desc *desc, u32 mask, u32 flag);
>>>> u32 (*msix_mask_irq)(struct msi_desc *desc, u32 flag);
>>>> void (*msi_read_message)(struct msi_desc *desc, struct msi_msg *msg);
>>>> void (*msi_write_message)(struct msi_desc *desc, struct msi_msg *msg);
>>>> void (*msi_set_intx)(struct msi_irqs *msi, int enable);
>>>> };
>>>> struct msi_ops provides several hook functions, generic MSI driver will call
>>>> the hook functions to access device speci...
2014 Jul 30
1
[RFC PATCH 00/11] Refactor MSI to support Non-PCI device
...ix_entry *entries);
>>> u32 (*msi_mask_irq)(struct msi_desc *desc, u32 mask, u32 flag);
>>> u32 (*msix_mask_irq)(struct msi_desc *desc, u32 flag);
>>> void (*msi_read_message)(struct msi_desc *desc, struct msi_msg *msg);
>>> void (*msi_write_message)(struct msi_desc *desc, struct msi_msg *msg);
>>> void (*msi_set_intx)(struct msi_irqs *msi, int enable);
>>> };
>>> struct msi_ops provides several hook functions, generic MSI driver will call
>>> the hook functions to access device specific registers. P...
2014 Jul 30
1
[RFC PATCH 00/11] Refactor MSI to support Non-PCI device
...ix_entry *entries);
>>> u32 (*msi_mask_irq)(struct msi_desc *desc, u32 mask, u32 flag);
>>> u32 (*msix_mask_irq)(struct msi_desc *desc, u32 flag);
>>> void (*msi_read_message)(struct msi_desc *desc, struct msi_msg *msg);
>>> void (*msi_write_message)(struct msi_desc *desc, struct msi_msg *msg);
>>> void (*msi_set_intx)(struct msi_irqs *msi, int enable);
>>> };
>>> struct msi_ops provides several hook functions, generic MSI driver will call
>>> the hook functions to access device specific registers. P...
2014 Aug 01
0
[RFC PATCH 00/11] Refactor MSI to support Non-PCI device
...hink we should touch the PCI interfaces at this point.
> > With the other operations, I think they should all take a 'struct device *'
> > as the first argument for convenience and consistency. I don't think you actually
> > need msi_read_message(), and we could avoid msi_write_message() by doing it
> > the other way round.
> >
>
> There only two functions use the read_msi_msg(), because every msi_desc has
> a struct msi_msg, and it caches the msi address and data. I will consider to
> retrieve the msg from cached msi_msg, then we can avoid the msi_read_...
2014 Jul 29
0
[RFC PATCH 00/11] Refactor MSI to support Non-PCI device
...(struct msi_irqs *msi, struct msix_entry *entries);
> u32 (*msi_mask_irq)(struct msi_desc *desc, u32 mask, u32 flag);
> u32 (*msix_mask_irq)(struct msi_desc *desc, u32 flag);
> void (*msi_read_message)(struct msi_desc *desc, struct msi_msg *msg);
> void (*msi_write_message)(struct msi_desc *desc, struct msi_msg *msg);
> void (*msi_set_intx)(struct msi_irqs *msi, int enable);
> };
> struct msi_ops provides several hook functions, generic MSI driver will call
> the hook functions to access device specific registers. PCI devices will share
> the s...
2014 Jul 26
0
[RFC PATCH 10/11] PCI/MSI: Split the generic MSI code into new file
...i_msg(unsigned int irq, struct msi_msg *msg)
+{
+ struct msi_desc *entry = irq_get_msi_desc(irq);
+
+ __get_cached_msi_msg(entry, msg);
+}
+
+void __write_msi_msg(struct msi_desc *entry, struct msi_msg *msg)
+{
+ struct msi_irqs *msi = entry->msi;
+
+ if (!msi || !msi->ops || !msi->ops->msi_write_message)
+ return;
+ msi->ops->msi_write_message(entry, msg);
+}
+
+void write_msi_msg(unsigned int irq, struct msi_msg *msg)
+{
+ struct msi_desc *entry = irq_get_msi_desc(irq);
+
+ __write_msi_msg(entry, msg);
+}
+
+void free_msi_irqs(struct msi_irqs *msi)
+{
+ struct msi_desc *entry, *tmp;
+
+ li...
2014 Aug 20
1
[RFC PATCH 10/11] PCI/MSI: Split the generic MSI code into new file
...t; + struct msi_desc *entry = irq_get_msi_desc(irq);
> +
> + __get_cached_msi_msg(entry, msg);
> +}
> +
> +void __write_msi_msg(struct msi_desc *entry, struct msi_msg *msg)
> +{
> + struct msi_irqs *msi = entry->msi;
> +
> + if (!msi || !msi->ops || !msi->ops->msi_write_message)
> + return;
> + msi->ops->msi_write_message(entry, msg);
> +}
> +
> +void write_msi_msg(unsigned int irq, struct msi_msg *msg)
> +{
> + struct msi_desc *entry = irq_get_msi_desc(irq);
> +
> + __write_msi_msg(entry, msg);
> +}
> +
> +void free_msi_irqs(str...
2014 Aug 20
1
[RFC PATCH 10/11] PCI/MSI: Split the generic MSI code into new file
...t; + struct msi_desc *entry = irq_get_msi_desc(irq);
> +
> + __get_cached_msi_msg(entry, msg);
> +}
> +
> +void __write_msi_msg(struct msi_desc *entry, struct msi_msg *msg)
> +{
> + struct msi_irqs *msi = entry->msi;
> +
> + if (!msi || !msi->ops || !msi->ops->msi_write_message)
> + return;
> + msi->ops->msi_write_message(entry, msg);
> +}
> +
> +void write_msi_msg(unsigned int irq, struct msi_msg *msg)
> +{
> + struct msi_desc *entry = irq_get_msi_desc(irq);
> +
> + __write_msi_msg(entry, msg);
> +}
> +
> +void free_msi_irqs(str...
2014 Jul 26
20
[RFC PATCH 00/11] Refactor MSI to support Non-PCI device
...struct msi_desc *entry);
int msix_setup_entries(struct msi_irqs *msi, struct msix_entry *entries);
u32 (*msi_mask_irq)(struct msi_desc *desc, u32 mask, u32 flag);
u32 (*msix_mask_irq)(struct msi_desc *desc, u32 flag);
void (*msi_read_message)(struct msi_desc *desc, struct msi_msg *msg);
void (*msi_write_message)(struct msi_desc *desc, struct msi_msg *msg);
void (*msi_set_intx)(struct msi_irqs *msi, int enable);
};
struct msi_ops provides several hook functions, generic MSI driver will call
the hook functions to access device specific registers. PCI devices will share
the same msi_ops, because they have t...
2014 Jul 26
20
[RFC PATCH 00/11] Refactor MSI to support Non-PCI device
...struct msi_desc *entry);
int msix_setup_entries(struct msi_irqs *msi, struct msix_entry *entries);
u32 (*msi_mask_irq)(struct msi_desc *desc, u32 mask, u32 flag);
u32 (*msix_mask_irq)(struct msi_desc *desc, u32 flag);
void (*msi_read_message)(struct msi_desc *desc, struct msi_msg *msg);
void (*msi_write_message)(struct msi_desc *desc, struct msi_msg *msg);
void (*msi_set_intx)(struct msi_irqs *msi, int enable);
};
struct msi_ops provides several hook functions, generic MSI driver will call
the hook functions to access device specific registers. PCI devices will share
the same msi_ops, because they have t...
2014 Aug 20
2
[RFC PATCH 00/11] Refactor MSI to support Non-PCI device
> -----Original Message-----
> From: linux-pci-owner at vger.kernel.org [mailto:linux-pci-owner at vger.kernel.org]
> On Behalf Of Yijing Wang
> Sent: Wednesday, August 20, 2014 11:59 AM
> To: Bhushan Bharat-R65777; Basu Arnab-B45036
> Cc: Xinwei Hu; Wuyun; Bjorn Helgaas; linux-pci at vger.kernel.org;
> Paul.Mundt at huawei.com; James E.J. Bottomley; Marc Zyngier; linux-arm-
2014 Aug 20
2
[RFC PATCH 00/11] Refactor MSI to support Non-PCI device
> -----Original Message-----
> From: linux-pci-owner at vger.kernel.org [mailto:linux-pci-owner at vger.kernel.org]
> On Behalf Of Yijing Wang
> Sent: Wednesday, August 20, 2014 11:59 AM
> To: Bhushan Bharat-R65777; Basu Arnab-B45036
> Cc: Xinwei Hu; Wuyun; Bjorn Helgaas; linux-pci at vger.kernel.org;
> Paul.Mundt at huawei.com; James E.J. Bottomley; Marc Zyngier; linux-arm-
2014 Aug 20
1
[RFC PATCH 09/11] PCI/MSI: refactor PCI MSI driver
...uct msi_ops pci_msi = {
> + .msi_set_enable = msi_set_enable,
> + .msi_setup_entry = msi_setup_entry,
> + .msix_setup_entries = msix_setup_entries,
> + .msi_mask_irq = default_msi_mask_irq,
> + .msix_mask_irq = default_msix_mask_irq,
> + .msi_read_message = __read_msi_msg,
> + .msi_write_message = __write_msi_msg,
> + .msi_set_intx = pci_intx_for_msi,
> +};
Ahh, want to be sure I am understanding this correctly. So if I have a non-pci driver "xyz" which wants to use separate ops then I need to have a all these functions in that driver. Something like driver/xyz/msi.c
Tha...
2014 Aug 20
1
[RFC PATCH 09/11] PCI/MSI: refactor PCI MSI driver
...uct msi_ops pci_msi = {
> + .msi_set_enable = msi_set_enable,
> + .msi_setup_entry = msi_setup_entry,
> + .msix_setup_entries = msix_setup_entries,
> + .msi_mask_irq = default_msi_mask_irq,
> + .msix_mask_irq = default_msix_mask_irq,
> + .msi_read_message = __read_msi_msg,
> + .msi_write_message = __write_msi_msg,
> + .msi_set_intx = pci_intx_for_msi,
> +};
Ahh, want to be sure I am understanding this correctly. So if I have a non-pci driver "xyz" which wants to use separate ops then I need to have a all these functions in that driver. Something like driver/xyz/msi.c
Tha...
2014 Jul 26
0
[RFC PATCH 09/11] PCI/MSI: refactor PCI MSI driver
...ev(struct pci_dev *dev)
+static struct msi_ops pci_msi = {
+ .msi_set_enable = msi_set_enable,
+ .msi_setup_entry = msi_setup_entry,
+ .msix_setup_entries = msix_setup_entries,
+ .msi_mask_irq = default_msi_mask_irq,
+ .msix_mask_irq = default_msix_mask_irq,
+ .msi_read_message = __read_msi_msg,
+ .msi_write_message = __write_msi_msg,
+ .msi_set_intx = pci_intx_for_msi,
+};
+
+struct msi_irqs *alloc_msi_irqs(void *data, struct msi_ops *ops)
{
- INIT_LIST_HEAD(&dev->msi_list);
+ struct msi_irqs *msi;
+
+ msi = kzalloc(sizeof(struct msi_irqs), GFP_KERNEL);
+ if (!msi)
+ return NULL;
+ INIT_LIST_HEAD(...