Patchwork [23/25] pci: add helper function to initialize wmask.

login
register
mail settings
Submitter Isaku Yamahata
Date Oct. 2, 2009, 8:16 p.m.
Message ID <1254514577-11896-24-git-send-email-yamahata@valinux.co.jp>
Download mbox | patch
Permalink /patch/34905/
State Superseded
Headers show

Comments

Isaku Yamahata - Oct. 2, 2009, 8:16 p.m.
add helper function to initialize wmask.
This will be used later.

Signed-off-by: Isaku Yamahata <yamahata@valinux.co.jp>
---
 hw/pci.c |   25 +++++++++++++++++++++++++
 hw/pci.h |    4 ++++
 2 files changed, 29 insertions(+), 0 deletions(-)
Michael S. Tsirkin - Oct. 4, 2009, 11:05 a.m.
On Sat, Oct 03, 2009 at 05:16:15AM +0900, Isaku Yamahata wrote:
> add helper function to initialize wmask.
> This will be used later.
> 
> Signed-off-by: Isaku Yamahata <yamahata@valinux.co.jp>
> ---
>  hw/pci.c |   25 +++++++++++++++++++++++++
>  hw/pci.h |    4 ++++
>  2 files changed, 29 insertions(+), 0 deletions(-)
> 
> diff --git a/hw/pci.c b/hw/pci.c
> index cc5738a..ec7c429 100644
> --- a/hw/pci.c
> +++ b/hw/pci.c
> @@ -415,6 +415,31 @@ static void pci_config_alloc(PCIDevice *pci_dev)
>      PCI_CONFIG_ALLOC(pci_dev, used, config_size);
>  }
>  
> +static void pci_conf_init(PCIDevice *d, uint32_t addr, uint32_t wmask, int len)
> +{
> +    int i;
> +
> +    for (i = 0; i < len; i++) {
> +        d->wmask[addr + i] = wmask & 0xff;
> +        wmask >>= 8;
> +    }
> +}
> +
> +void pci_conf_initb(PCIDevice *d, uint32_t addr, uint32_t wmask)
> +{
> +    pci_conf_init(d, addr, wmask, 1);
> +}
> +
> +void pci_conf_initw(PCIDevice *d, uint32_t addr, uint32_t wmask)
> +{
> +    pci_conf_init(d, addr, wmask, 2);
> +}
> +
> +void pci_conf_initl(PCIDevice *d, uint32_t addr, uint32_t wmask)
> +{
> +    pci_conf_init(d, addr, wmask, 4);
> +}
> +

These seem to just implement pci endianness.
Just use pci_set_word / pci_set_long.

>  /* -1 for devfn means auto assign */
>  static PCIDevice *do_pci_register_device(PCIDevice *pci_dev, PCIBus *bus,
>                                           const char *name, int devfn,
> diff --git a/hw/pci.h b/hw/pci.h
> index be241b4..56285e2 100644
> --- a/hw/pci.h
> +++ b/hw/pci.h
> @@ -255,6 +255,10 @@ struct PCIDevice {
>      target_phys_addr_t msix_page_size;
>  };
>  
> +void pci_conf_initb(PCIDevice *d, uint32_t addr, uint32_t wmask);
> +void pci_conf_initw(PCIDevice *d, uint32_t addr, uint32_t wmask);
> +void pci_conf_initl(PCIDevice *d, uint32_t addr, uint32_t wmask);
> +
>  PCIDevice *pci_register_device(PCIBus *bus, const char *name,
>                                 int instance_size, int devfn,
>                                 PCIConfigReadFunc *config_read,
> -- 
> 1.6.0.2
> 
>

Patch

diff --git a/hw/pci.c b/hw/pci.c
index cc5738a..ec7c429 100644
--- a/hw/pci.c
+++ b/hw/pci.c
@@ -415,6 +415,31 @@  static void pci_config_alloc(PCIDevice *pci_dev)
     PCI_CONFIG_ALLOC(pci_dev, used, config_size);
 }
 
+static void pci_conf_init(PCIDevice *d, uint32_t addr, uint32_t wmask, int len)
+{
+    int i;
+
+    for (i = 0; i < len; i++) {
+        d->wmask[addr + i] = wmask & 0xff;
+        wmask >>= 8;
+    }
+}
+
+void pci_conf_initb(PCIDevice *d, uint32_t addr, uint32_t wmask)
+{
+    pci_conf_init(d, addr, wmask, 1);
+}
+
+void pci_conf_initw(PCIDevice *d, uint32_t addr, uint32_t wmask)
+{
+    pci_conf_init(d, addr, wmask, 2);
+}
+
+void pci_conf_initl(PCIDevice *d, uint32_t addr, uint32_t wmask)
+{
+    pci_conf_init(d, addr, wmask, 4);
+}
+
 /* -1 for devfn means auto assign */
 static PCIDevice *do_pci_register_device(PCIDevice *pci_dev, PCIBus *bus,
                                          const char *name, int devfn,
diff --git a/hw/pci.h b/hw/pci.h
index be241b4..56285e2 100644
--- a/hw/pci.h
+++ b/hw/pci.h
@@ -255,6 +255,10 @@  struct PCIDevice {
     target_phys_addr_t msix_page_size;
 };
 
+void pci_conf_initb(PCIDevice *d, uint32_t addr, uint32_t wmask);
+void pci_conf_initw(PCIDevice *d, uint32_t addr, uint32_t wmask);
+void pci_conf_initl(PCIDevice *d, uint32_t addr, uint32_t wmask);
+
 PCIDevice *pci_register_device(PCIBus *bus, const char *name,
                                int instance_size, int devfn,
                                PCIConfigReadFunc *config_read,