All of lore.kernel.org
 help / color / mirror / Atom feed
From: Isaku Yamahata <yamahata@valinux.co.jp>
To: qemu-devel@nongnu.org
Cc: mst@redhat.com
Subject: Re: [Qemu-devel] [PATCH v2 00/38] pci: initialize ids in pci	common code
Date: Wed, 18 May 2011 11:19:01 +0900	[thread overview]
Message-ID: <20110518021901.GC1705@valinux.co.jp> (raw)
In-Reply-To: <cover.1305650874.git.yamahata@valinux.co.jp>

Here is the prog_interface part.
You were unsure about prog_interface, so I split it out.
Thus you can determine if prog_interface conversion is wanted or not.

>From abaf67175190c2f4d0c222c2ae8010e9de38bf59 Mon Sep 17 00:00:00 2001
Message-Id: <abaf67175190c2f4d0c222c2ae8010e9de38bf59.1305684983.git.yamahata@valinux.co.jp>
From: Isaku Yamahata <yamahata@valinux.co.jp>
Date: Wed, 18 May 2011 09:58:21 +0900
Subject: [PATCH] pci: initialize prog_interface by common code

Add prog_interface to PCIDeviceInfo and initialize
prog_interface register in the common initialization code.
It's read-only register.

Signed-off-by: Isaku Yamahata <yamahata@valinux.co.jp>
---
 hw/ac97.c        |    2 --
 hw/acpi_piix4.c  |    1 -
 hw/bonito.c      |    3 ---
 hw/grackle_pci.c |    2 +-
 hw/gt64xxx.c     |    1 -
 hw/ide/cmd646.c  |    3 +--
 hw/ide/ich.c     |    3 +--
 hw/ide/piix.c    |    5 ++---
 hw/ide/via.c     |    2 +-
 hw/pci.c         |    1 +
 hw/pci.h         |    1 +
 hw/sun4u.c       |    1 -
 hw/usb-ohci.c    |    2 +-
 hw/usb-uhci.c    |    1 -
 hw/vt82c686.c    |    4 ----
 15 files changed, 9 insertions(+), 23 deletions(-)

diff --git a/hw/ac97.c b/hw/ac97.c
index bf1d1d4..ec2b928 100644
--- a/hw/ac97.c
+++ b/hw/ac97.c
@@ -1289,8 +1289,6 @@ static int ac97_initfn (PCIDevice *dev)
     c[PCI_STATUS] = PCI_STATUS_FAST_BACK;      /* pcists pci status rwc, ro */
     c[PCI_STATUS + 1] = PCI_STATUS_DEVSEL_MEDIUM >> 8;
 
-    c[PCI_CLASS_PROG] = 0x00;      /* pi programming interface ro */
-
     /* TODO set when bar is registered. no need to override. */
     /* nabmar native audio mixer base address rw */
     c[PCI_BASE_ADDRESS_0] = PCI_BASE_ADDRESS_SPACE_IO;
diff --git a/hw/acpi_piix4.c b/hw/acpi_piix4.c
index 03d833a..4e5674f 100644
--- a/hw/acpi_piix4.c
+++ b/hw/acpi_piix4.c
@@ -319,7 +319,6 @@ static int piix4_pm_initfn(PCIDevice *dev)
     pci_conf = s->dev.config;
     pci_conf[0x06] = 0x80;
     pci_conf[0x07] = 0x02;
-    pci_conf[0x09] = 0x00;
     pci_conf[0x3d] = 0x01; // interrupt pin 1
 
     pci_conf[0x40] = 0x01; /* PM io base read only bit */
diff --git a/hw/bonito.c b/hw/bonito.c
index e8c57a3..d1e6d1f 100644
--- a/hw/bonito.c
+++ b/hw/bonito.c
@@ -690,9 +690,6 @@ static int bonito_initfn(PCIDevice *dev)
 {
     PCIBonitoState *s = DO_UPCAST(PCIBonitoState, dev, dev);
 
-    /* Bonito North Bridge, built on FPGA, VENDOR_ID/DEVICE_ID are "undefined" */
-    pci_config_set_prog_interface(dev->config, 0x00);
-
     /* set the north bridge register mapping */
     s->bonito_reg_handle = cpu_register_io_memory(bonito_read, bonito_write, s,
                                                   DEVICE_NATIVE_ENDIAN);
diff --git a/hw/grackle_pci.c b/hw/grackle_pci.c
index 7a5221c..46ead7b 100644
--- a/hw/grackle_pci.c
+++ b/hw/grackle_pci.c
@@ -104,7 +104,6 @@ static int pci_grackle_init_device(SysBusDevice *dev)
 
 static int grackle_pci_host_init(PCIDevice *d)
 {
-    d->config[0x09] = 0x01;
     return 0;
 }
 
@@ -115,6 +114,7 @@ static PCIDeviceInfo grackle_pci_host_info = {
     .vendor_id = PCI_VENDOR_ID_MOTOROLA,
     .device_id = PCI_DEVICE_ID_MOTOROLA_MPC106,
     .revision  = 0x00, // revision
+    .prog_interface = 0x01,
     .class_id  = PCI_CLASS_BRIDGE_HOST,
 };
 
diff --git a/hw/gt64xxx.c b/hw/gt64xxx.c
index 8e1f6a0..54ace8e 100644
--- a/hw/gt64xxx.c
+++ b/hw/gt64xxx.c
@@ -1121,7 +1121,6 @@ static int gt64120_pci_init(PCIDevice *d)
     pci_set_word(d->config + PCI_COMMAND, 0);
     pci_set_word(d->config + PCI_STATUS,
                  PCI_STATUS_FAST_BACK | PCI_STATUS_DEVSEL_MEDIUM);
-    pci_config_set_prog_interface(d->config, 0);
     pci_set_long(d->config + PCI_BASE_ADDRESS_0, 0x00000008);
     pci_set_long(d->config + PCI_BASE_ADDRESS_1, 0x01000008);
     pci_set_long(d->config + PCI_BASE_ADDRESS_2, 0x1c000000);
diff --git a/hw/ide/cmd646.c b/hw/ide/cmd646.c
index 56302b5..0ca9767 100644
--- a/hw/ide/cmd646.c
+++ b/hw/ide/cmd646.c
@@ -226,8 +226,6 @@ static int pci_cmd646_ide_initfn(PCIDevice *dev)
     qemu_irq *irq;
     int i;
 
-    pci_conf[PCI_CLASS_PROG] = 0x8f;
-
     pci_conf[0x51] = 0x04; // enable IDE0
     if (d->secondary) {
         /* XXX: if not enabled, really disable the seconday IDE controller */
@@ -279,6 +277,7 @@ static PCIDeviceInfo cmd646_ide_info[] = {
         .vendor_id    = PCI_VENDOR_ID_CMD,
         .device_id    = PCI_DEVICE_ID_CMD_646,
         .revision     = 0x07, // IDE controller revision
+        .prog_intarface = 0x8f,
         .class_id     = PCI_CLASS_STORAGE_IDE,
         .qdev.props   = (Property[]) {
             DEFINE_PROP_UINT32("secondary", PCIIDEState, secondary, 0),
diff --git a/hw/ide/ich.c b/hw/ide/ich.c
index cb1c405..784bd96 100644
--- a/hw/ide/ich.c
+++ b/hw/ide/ich.c
@@ -77,8 +77,6 @@ static int pci_ich9_ahci_init(PCIDevice *dev)
     struct AHCIPCIState *d;
     d = DO_UPCAST(struct AHCIPCIState, card, dev);
 
-    pci_config_set_prog_interface(d->card.config, AHCI_PROGMODE_MAJOR_REV_1);
-
     d->card.config[PCI_CACHE_LINE_SIZE] = 0x08;  /* Cache line size */
     d->card.config[PCI_LATENCY_TIMER]   = 0x00;  /* Latency timer */
     pci_config_set_interrupt_pin(d->card.config, 1);
@@ -129,6 +127,7 @@ static PCIDeviceInfo ich_ahci_info[] = {
         .vendor_id    = PCI_VENDOR_ID_INTEL,
         .device_id    = PCI_DEVICE_ID_INTEL_82801IR,
         .revision     = 0x02,
+        .prog_interface = AHCI_PROGMODE_MAJOR_REV_1,
         .class_id     = PCI_CLASS_STORAGE_SATA,
     },{
         /* end of list */
diff --git a/hw/ide/piix.c b/hw/ide/piix.c
index 84f72b0..c62e2e0 100644
--- a/hw/ide/piix.c
+++ b/hw/ide/piix.c
@@ -134,9 +134,6 @@ static void pci_piix_init_ports(PCIIDEState *d) {
 static int pci_piix_ide_initfn(PCIDevice *dev)
 {
     PCIIDEState *d = DO_UPCAST(PCIIDEState, dev, dev);
-    uint8_t *pci_conf = d->dev.config;
-
-    pci_conf[PCI_CLASS_PROG] = 0x80; // legacy ATA mode
 
     qemu_register_reset(piix3_reset, d);
 
@@ -180,6 +177,7 @@ static PCIDeviceInfo piix_ide_info[] = {
         .init         = pci_piix_ide_initfn,
         .vendor_id    = PCI_VENDOR_ID_INTEL,
         .device_id    = PCI_DEVICE_ID_INTEL_82371SB_1,
+        .prog_interface = 0x80, // legacy ATA mode
         .class_id     = PCI_CLASS_STORAGE_IDE,
     },{
         .qdev.name    = "piix4-ide",
@@ -189,6 +187,7 @@ static PCIDeviceInfo piix_ide_info[] = {
         .init         = pci_piix_ide_initfn,
         .vendor_id    = PCI_VENDOR_ID_INTEL,
         .device_id    = PCI_DEVICE_ID_INTEL_82371AB,
+        .prog_interface = 0x80, // legacy ATA mode
         .class_id     = PCI_CLASS_STORAGE_IDE,
     },{
         /* end of list */
diff --git a/hw/ide/via.c b/hw/ide/via.c
index e9e67de..3901bfa 100644
--- a/hw/ide/via.c
+++ b/hw/ide/via.c
@@ -160,7 +160,6 @@ static int vt82c686b_ide_initfn(PCIDevice *dev)
     PCIIDEState *d = DO_UPCAST(PCIIDEState, dev, dev);;
     uint8_t *pci_conf = d->dev.config;
 
-    pci_config_set_prog_interface(pci_conf, 0x8a); /* legacy ATA mode */
     pci_set_long(pci_conf + PCI_CAPABILITY_LIST, 0x000000c0);
 
     qemu_register_reset(via_reset, d);
@@ -190,6 +189,7 @@ static PCIDeviceInfo via_ide_info = {
     .vendor_id    = PCI_VENDOR_ID_VIA,
     .device_id    = PCI_DEVICE_ID_VIA_IDE,
     .revision     = 0x06, /* Revision 0.6 */
+    .prog_interface = 0x8a, /* legacy ATA mode */
     .class_id     = PCI_CLASS_STORAGE_IDE,
 };
 
diff --git a/hw/pci.c b/hw/pci.c
index 0e97a02..1452bc1 100644
--- a/hw/pci.c
+++ b/hw/pci.c
@@ -754,6 +754,7 @@ static PCIDevice *do_pci_register_device(PCIDevice *pci_dev, PCIBus *bus,
     pci_config_set_vendor_id(pci_dev->config, info->vendor_id);
     pci_config_set_device_id(pci_dev->config, info->device_id);
     pci_config_set_revision(pci_dev->config, info->revision);
+    pci_config_set_prog_interface(pci_dev->config, info->prog_interface);
     pci_config_set_class(pci_dev->config, info->class_id);
 
     if (!info->is_bridge) {
diff --git a/hw/pci.h b/hw/pci.h
index ce214f4..522b9c3 100644
--- a/hw/pci.h
+++ b/hw/pci.h
@@ -436,6 +436,7 @@ typedef struct {
     uint16_t vendor_id;
     uint16_t device_id;
     uint8_t revision;
+    uint8_t prog_interface;
     uint16_t class_id;
     uint16_t subsystem_vendor_id;       /* only for header type = 0 */
     uint16_t subsystem_id;              /* only for header type = 0 */
diff --git a/hw/sun4u.c b/hw/sun4u.c
index b95daea..1a70d72 100644
--- a/hw/sun4u.c
+++ b/hw/sun4u.c
@@ -557,7 +557,6 @@ pci_ebus_init1(PCIDevice *s)
     s->config[0x05] = 0x00;
     s->config[0x06] = 0xa0; // status = fast back-to-back, 66MHz, no error
     s->config[0x07] = 0x03; // status = medium devsel
-    s->config[0x09] = 0x00; // programming i/f
     s->config[0x0D] = 0x0a; // latency_timer
 
     pci_register_bar(s, 0, 0x1000000, PCI_BASE_ADDRESS_SPACE_MEMORY,
diff --git a/hw/usb-ohci.c b/hw/usb-ohci.c
index 7ff2322..925da0b 100644
--- a/hw/usb-ohci.c
+++ b/hw/usb-ohci.c
@@ -1716,7 +1716,6 @@ static int usb_ohci_initfn_pci(struct PCIDevice *dev)
     OHCIPCIState *ohci = DO_UPCAST(OHCIPCIState, pci_dev, dev);
     int num_ports = 3;
 
-    ohci->pci_dev.config[PCI_CLASS_PROG] = 0x10; /* OHCI */
     /* TODO: RST# value should be 0. */
     ohci->pci_dev.config[PCI_INTERRUPT_PIN] = 0x01; /* interrupt pin 1 */
 
@@ -1758,6 +1757,7 @@ static PCIDeviceInfo ohci_pci_info = {
     .init         = usb_ohci_initfn_pci,
     .vendor_id    = PCI_VENDOR_ID_APPLE,
     .device_id    = PCI_DEVICE_ID_APPLE_IPID_USB,
+    .prog_interface = 0x10, /* OHCI */
     .class_id     = PCI_CLASS_SERIAL_USB,
 };
 
diff --git a/hw/usb-uhci.c b/hw/usb-uhci.c
index 536c24c..00915a4 100644
--- a/hw/usb-uhci.c
+++ b/hw/usb-uhci.c
@@ -1121,7 +1121,6 @@ static int usb_uhci_common_initfn(PCIDevice *dev)
     uint8_t *pci_conf = s->dev.config;
     int i;
 
-    pci_conf[PCI_CLASS_PROG] = 0x00;
     /* TODO: reset value should be 0. */
     pci_conf[PCI_INTERRUPT_PIN] = 4; // interrupt pin 3
     pci_conf[0x60] = 0x10; // release number
diff --git a/hw/vt82c686.c b/hw/vt82c686.c
index f23bea9..0184462 100644
--- a/hw/vt82c686.c
+++ b/hw/vt82c686.c
@@ -486,15 +486,11 @@ static const VMStateDescription vmstate_via = {
 /* init the PCI-to-ISA bridge */
 static int vt82c686b_initfn(PCIDevice *d)
 {
-    uint8_t *pci_conf;
     uint8_t *wmask;
     int i;
 
     isa_bus_new(&d->qdev);
 
-    pci_conf = d->config;
-    pci_config_set_prog_interface(pci_conf, 0x0);
-
     wmask = d->wmask;
     for (i = 0x00; i < 0xff; i++) {
        if (i<=0x03 || (i>=0x08 && i<=0x3f)) {
-- 
1.7.1.1

-- 
yamahata

  parent reply	other threads:[~2011-05-18  2:19 UTC|newest]

Thread overview: 54+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-05-17 16:55 [Qemu-devel] [PATCH v2 00/38] pci: initialize ids in pci common code Isaku Yamahata
2011-05-17 16:55 ` [Qemu-devel] [PATCH v2 01/38] pci: move ids of config space into PCIDeviceInfo Isaku Yamahata
2011-05-17 16:55 ` [Qemu-devel] [PATCH v2 02/38] usb-uhci: convert to PCIDEviceInfo to initialize ids Isaku Yamahata
2011-05-17 16:55 ` [Qemu-devel] [PATCH v2 03/38] eepro100: convert to PCIDeviceInfo " Isaku Yamahata
2011-05-17 16:55 ` [Qemu-devel] [PATCH v2 04/38] dec_pci: " Isaku Yamahata
2011-05-17 16:55 ` [Qemu-devel] [PATCH v2 05/38] apb_pci: " Isaku Yamahata
2011-05-17 16:55 ` [Qemu-devel] [PATCH v2 06/38] ide/piix: " Isaku Yamahata
2011-05-17 16:55 ` [Qemu-devel] [PATCH v2 07/38] vmware_vga.c: " Isaku Yamahata
2011-05-17 16:55 ` [Qemu-devel] [PATCH v2 08/38] hw/ac97.c: " Isaku Yamahata
2011-05-17 16:55 ` [Qemu-devel] [PATCH v2 09/38] hw/acpi_piix4.c: " Isaku Yamahata
2011-05-19  8:10   ` Markus Armbruster
2011-05-19 11:55     ` Isaku Yamahata
2011-05-19 11:59       ` Michael S. Tsirkin
2011-05-19 12:17         ` Isaku Yamahata
2011-05-19 12:36         ` Markus Armbruster
2011-05-19 13:06           ` Isaku Yamahata
2011-05-19 13:43             ` Michael S. Tsirkin
2011-05-17 16:55 ` [Qemu-devel] [PATCH v2 10/38] hw/bonito.c: " Isaku Yamahata
2011-05-17 16:55 ` [Qemu-devel] [PATCH v2 11/38] hw/cirrus_vga.c: " Isaku Yamahata
2011-05-17 16:55 ` [Qemu-devel] [PATCH v2 12/38] hw/e1000.c: " Isaku Yamahata
2011-05-17 16:55 ` [Qemu-devel] [PATCH v2 13/38] hw/es1370.c: " Isaku Yamahata
2011-05-17 16:55 ` [Qemu-devel] [PATCH v2 14/38] hw/grackle_pci.c: " Isaku Yamahata
2011-05-17 16:55 ` [Qemu-devel] [PATCH v2 15/38] hw/gt64xxx.c: " Isaku Yamahata
2011-05-17 16:55 ` [Qemu-devel] [PATCH v2 16/38] hw/ide/cmd646.c: " Isaku Yamahata
2011-05-17 16:55 ` [Qemu-devel] [PATCH v2 17/38] hw/ide/ich.c: " Isaku Yamahata
2011-05-17 16:55 ` [Qemu-devel] [PATCH v2 18/38] hw/ide/via.c: " Isaku Yamahata
2011-05-17 16:55 ` [Qemu-devel] [PATCH v2 19/38] hw/intel-hda.c: " Isaku Yamahata
2011-05-17 16:55 ` [Qemu-devel] [PATCH v2 20/38] hw/ioh3420.c: " Isaku Yamahata
2011-05-17 16:55 ` [Qemu-devel] [PATCH v2 21/38] hw/ivshmem.c: " Isaku Yamahata
2011-05-17 16:55 ` [Qemu-devel] [PATCH v2 22/38] hw/lsi53c895a.c: " Isaku Yamahata
2011-05-17 16:55 ` [Qemu-devel] [PATCH v2 23/38] hw/ne2000.c: " Isaku Yamahata
2011-05-17 16:55 ` [Qemu-devel] [PATCH v2 24/38] hw/pcnet-pci.c: " Isaku Yamahata
2011-05-17 16:55 ` [Qemu-devel] [PATCH v2 25/38] hw/piix4.c: " Isaku Yamahata
2011-05-17 16:55 ` [Qemu-devel] [PATCH v2 26/38] hw/piix_pci.c: " Isaku Yamahata
2011-05-17 16:55 ` [Qemu-devel] [PATCH v2 27/38] hw/qxl.c: " Isaku Yamahata
2011-05-17 16:55 ` [Qemu-devel] [PATCH v2 28/38] hw/rtl8139.c: " Isaku Yamahata
2011-05-17 16:55 ` [Qemu-devel] [PATCH v2 29/38] hw/sh_pci.c: " Isaku Yamahata
2011-05-17 16:55 ` [Qemu-devel] [PATCH v2 30/38] hw/sun4u.c: " Isaku Yamahata
2011-05-17 16:55 ` [Qemu-devel] [PATCH v2 31/38] hw/unin_pci.c: " Isaku Yamahata
2011-05-17 16:55 ` [Qemu-devel] [PATCH v2 32/38] hw/usb-ohci.c: " Isaku Yamahata
2011-05-17 16:55 ` [Qemu-devel] [PATCH v2 33/38] hw/versatile_pci.c: " Isaku Yamahata
2011-05-17 16:55 ` [Qemu-devel] [PATCH v2 34/38] hw/vga-pci.c: " Isaku Yamahata
2011-05-17 16:55 ` [Qemu-devel] [PATCH v2 35/38] hw/vt82c686.c: " Isaku Yamahata
2011-05-17 16:55 ` [Qemu-devel] [PATCH v2 36/38] hw/wdt_i6300esb.c: " Isaku Yamahata
2011-05-17 16:55 ` [Qemu-devel] [PATCH v2 37/38] hw/xio3130_downstream.c: " Isaku Yamahata
2011-05-17 16:55 ` [Qemu-devel] [PATCH v2 38/38] hw/xio3130_upstream.c: " Isaku Yamahata
2011-05-18  2:19 ` Isaku Yamahata [this message]
2011-05-18  9:17 ` [Qemu-devel] [PATCH v2 00/38] pci: initialize ids in pci common code Michael S. Tsirkin
2011-05-18  9:26   ` Gerd Hoffmann
2011-05-18 10:55   ` Isaku Yamahata
2011-05-18 11:30     ` Michael S. Tsirkin
2011-05-18 11:34     ` Michael S. Tsirkin
2011-05-18 13:07       ` Gerd Hoffmann
2011-05-18 13:20         ` Michael S. Tsirkin

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20110518021901.GC1705@valinux.co.jp \
    --to=yamahata@valinux.co.jp \
    --cc=mst@redhat.com \
    --cc=qemu-devel@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.