Merge branch 'upstream' into master-test
authorRiku Voipio <riku.voipio@nokia.com>
Mon, 20 Apr 2009 14:27:28 +0000 (17:27 +0300)
committerRiku Voipio <riku.voipio@nokia.com>
Mon, 20 Apr 2009 14:27:28 +0000 (17:27 +0300)
Big, bad, merge

Conflicts:

hw/smc91c111.c
hw/usb-ohci.c
linux-user/main.c
linux-user/syscall.c

20 files changed:
1  2 
Makefile
Makefile.target
block.c
block.h
exec.c
hw/boards.h
hw/devices.h
hw/gumstix.c
hw/integratorcp.c
hw/mainstone.c
hw/nseries.c
hw/omap_dss.c
hw/onenand.c
hw/realview.c
hw/smc91c111.c
hw/soc_dma.h
hw/usb-ohci.c
hw/versatilepb.c
linux-user/main.c
linux-user/syscall.c

diff --cc Makefile
Simple merge
diff --cc Makefile.target
@@@ -662,11 -656,9 +658,10 @@@ OBJS+= pxa2xx_lcd.o pxa2xx_mmci.o pxa2x
  OBJS+= pflash_cfi01.o gumstix.o
  OBJS+= zaurus.o ide.o serial.o nand.o ecc.o spitz.o tosa.o tc6393xb.o
  OBJS+= omap1.o omap_lcdc.o omap_dma.o omap_clk.o omap_mmc.o omap_i2c.o
 -OBJS+= omap2.o omap_dss.o soc_dma.o
 +OBJS+= omap2.o omap_dss.o soc_dma.o omap_spi.o
 +OBJS+= omap3.o omap3_boot.o omap3_mmc.o omap3_usb.o beagle.o twl4030.o
  OBJS+= omap_sx1.o palm.o tsc210x.o
  OBJS+= nseries.o blizzard.o onenand.o vga.o cbus.o tusb6010.o usb-musb.o
- OBJS+= tsc2005.o bt-hci-csr.o
  OBJS+= mst_fpga.o mainstone.o
  OBJS+= musicpal.o pflash_cfi02.o
  OBJS+= framebuffer.o
diff --cc block.c
Simple merge
diff --cc block.h
Simple merge
diff --cc exec.c
Simple merge
diff --cc hw/boards.h
Simple merge
diff --cc hw/devices.h
Simple merge
diff --cc hw/gumstix.c
Simple merge
Simple merge
diff --cc hw/mainstone.c
Simple merge
diff --cc hw/nseries.c
Simple merge
diff --cc hw/omap_dss.c
Simple merge
diff --cc hw/onenand.c
Simple merge
diff --cc hw/realview.c
Simple merge
diff --cc hw/smc91c111.c
@@@ -691,99 -691,32 +691,108 @@@ static CPUWriteMemoryFunc *smc91c111_wr
      smc91c111_writel
  };
  
 +int smc91c111_iomemtype(void *opaque) {
 +    smc91c111_state *s=(smc91c111_state *) opaque;
-     return s->iomemtype;
++    return s->mmio_index;
 +}
 +
 +static void smc91c111_save_state(QEMUFile *f, void *opaque)
 +{
 +    smc91c111_state *s = (smc91c111_state *)opaque;
 +    int i;
 +    
 +    qemu_put_be16(f, s->tcr);
 +    qemu_put_be16(f, s->rcr);
 +    qemu_put_be16(f, s->cr);
 +    qemu_put_be16(f, s->ctr);
 +    qemu_put_be16(f, s->gpr);
 +    qemu_put_be16(f, s->ptr);
 +    qemu_put_be16(f, s->ercv);
 +    qemu_put_sbe32(f, s->bank);
 +    qemu_put_sbe32(f, s->packet_num);
 +    qemu_put_sbe32(f, s->tx_alloc);
 +    qemu_put_sbe32(f, s->allocated);
 +    qemu_put_sbe32(f, s->tx_fifo_len);
 +    qemu_put_sbe32(f, s->rx_fifo_len);
 +    qemu_put_sbe32(f, s->tx_fifo_done_len);
 +    qemu_put_byte(f, s->int_level);
 +    qemu_put_byte(f, s->int_mask);
 +    qemu_put_buffer(f, s->macaddr, sizeof(s->macaddr));
 +    for (i = 0; i < NUM_PACKETS; i++) {
 +        qemu_put_sbe32(f, s->tx_fifo[i]);
 +        qemu_put_sbe32(f, s->rx_fifo[i]);
 +        qemu_put_sbe32(f, s->tx_fifo_done[i]);
 +        qemu_put_buffer(f, s->data[i], sizeof(s->data[i]));
 +    }
 +}
 +
 +static int smc91c111_load_state(QEMUFile *f, void *opaque, int version_id)
 +{
 +    smc91c111_state *s = (smc91c111_state *)opaque;
 +    int i;
 +    
 +    if (version_id)
 +        return -EINVAL;
 +    
 +    s->tcr = qemu_get_be16(f);
 +    s->rcr = qemu_get_be16(f);
 +    s->cr = qemu_get_be16(f);
 +    s->ctr = qemu_get_be16(f);
 +    s->gpr = qemu_get_be16(f);
 +    s->ptr = qemu_get_be16(f);
 +    s->ercv = qemu_get_be16(f);
 +    s->bank = qemu_get_sbe32(f);
 +    s->packet_num = qemu_get_sbe32(f);
 +    s->tx_alloc = qemu_get_sbe32(f);
 +    s->allocated = qemu_get_sbe32(f);
 +    s->tx_fifo_len = qemu_get_sbe32(f);
 +    s->rx_fifo_len = qemu_get_sbe32(f);
 +    s->tx_fifo_done_len = qemu_get_sbe32(f);
 +    s->int_level = qemu_get_byte(f);
 +    s->int_mask = qemu_get_byte(f);
 +    qemu_get_buffer(f, s->macaddr, sizeof(s->macaddr));
 +    for (i = 0; i < NUM_PACKETS; i++) {
 +        s->tx_fifo[i] = qemu_get_sbe32(f);
 +        s->rx_fifo[i] = qemu_get_sbe32(f);
 +        s->tx_fifo_done[i] = qemu_get_sbe32(f);
 +        qemu_get_buffer(f, s->data[i], sizeof(s->data[i]));
 +    }
 +    
 +    smc91c111_update(s);
 +    
 +    return 0;
 +}
 +
+ static void smc91c111_cleanup(VLANClientState *vc)
+ {
+     smc91c111_state *s = vc->opaque;
+     cpu_unregister_io_memory(s->mmio_index);
+     qemu_free(s);
+ }
 -void smc91c111_init(NICInfo *nd, uint32_t base, qemu_irq irq)
 +void *smc91c111_init(NICInfo *nd, uint32_t base, qemu_irq irq, int phys_alloc)
  {
      smc91c111_state *s;
  
      qemu_check_nic_model(nd, "smc91c111");
  
      s = (smc91c111_state *)qemu_mallocz(sizeof(smc91c111_state));
-     s->iomemtype = cpu_register_io_memory(0, smc91c111_readfn,
-                                           smc91c111_writefn, s);
+     s->mmio_index = cpu_register_io_memory(0, smc91c111_readfn,
+                                            smc91c111_writefn, s);
 -    cpu_register_physical_memory(base, 16, s->mmio_index);
 +    if (phys_alloc)
-         cpu_register_physical_memory(base, 16, s->iomemtype);
++        cpu_register_physical_memory(base, 16, s->mmio_index);
      s->irq = irq;
      memcpy(s->macaddr, nd->macaddr, 6);
  
      smc91c111_reset(s);
  
      s->vc = qemu_new_vlan_client(nd->vlan, nd->model, nd->name,
-                                  smc91c111_receive, smc91c111_can_receive, s);
+                                  smc91c111_receive, smc91c111_can_receive,
+                                  smc91c111_cleanup, s);
      qemu_format_nic_info_str(s->vc, s->macaddr);
      /* ??? Save/restore.  */
 +    register_savevm("smc91c111", -1, 0,
 +                    smc91c111_save_state, smc91c111_load_state, s);
 +    return s;
  }
diff --cc hw/soc_dma.h
Simple merge
diff --cc hw/usb-ohci.c
@@@ -32,7 -32,7 +32,8 @@@
  #include "usb.h"
  #include "pci.h"
  #include "pxa.h"
 +#include "omap.h"
+ #include "devices.h"
  
  //#define DEBUG_OHCI
  /* Dump packet contents.  */
@@@ -62,7 -62,7 +63,8 @@@ typedef struct OHCIPort 
  enum ohci_type {
      OHCI_TYPE_PCI,
      OHCI_TYPE_PXA,
 +    OHCI_TYPE_OMAP
+     OHCI_TYPE_SM501,
  };
  
  typedef struct {
@@@ -1706,11 -1747,14 +1749,23 @@@ void usb_ohci_init_pxa(target_phys_addr
      cpu_register_physical_memory(base, 0x1000, ohci->mem);
  }
  
 +int usb_ohci_init_omap(target_phys_addr_t base, uint32_t region_size,
 +                       int num_ports, qemu_irq irq)
 +{
 +    OHCIState *ohci = (OHCIState *)qemu_mallocz(sizeof(OHCIState));
 +    
 +    usb_ohci_init(ohci, num_ports, -1, irq, OHCI_TYPE_OMAP, "OHCI USB");
 +    return ohci->mem;
 +}
++
+ void usb_ohci_init_sm501(uint32_t mmio_base, uint32_t localmem_base,
+                          int num_ports, int devfn, qemu_irq irq)
+ {
+     OHCIState *ohci = (OHCIState *)qemu_mallocz(sizeof(OHCIState));
+     usb_ohci_init(ohci, num_ports, devfn, irq,
+                   OHCI_TYPE_SM501, "OHCI USB", localmem_base);
+     cpu_register_physical_memory(mmio_base, 0x1000, ohci->mem);
+ }
Simple merge
Simple merge
Simple merge