Revision df32fd1c hw/usb/hcd-ohci.c
b/hw/usb/hcd-ohci.c | ||
---|---|---|
62 | 62 |
USBBus bus; |
63 | 63 |
qemu_irq irq; |
64 | 64 |
MemoryRegion mem; |
65 |
DMAContext *dma;
|
|
65 |
AddressSpace *as;
|
|
66 | 66 |
int num_ports; |
67 | 67 |
const char *name; |
68 | 68 |
|
... | ... | |
508 | 508 |
addr += ohci->localmem_base; |
509 | 509 |
|
510 | 510 |
for (i = 0; i < num; i++, buf++, addr += sizeof(*buf)) { |
511 |
dma_memory_read(ohci->dma, addr, buf, sizeof(*buf));
|
|
511 |
dma_memory_read(ohci->as, addr, buf, sizeof(*buf));
|
|
512 | 512 |
*buf = le32_to_cpu(*buf); |
513 | 513 |
} |
514 | 514 |
|
... | ... | |
525 | 525 |
|
526 | 526 |
for (i = 0; i < num; i++, buf++, addr += sizeof(*buf)) { |
527 | 527 |
uint32_t tmp = cpu_to_le32(*buf); |
528 |
dma_memory_write(ohci->dma, addr, &tmp, sizeof(tmp));
|
|
528 |
dma_memory_write(ohci->as, addr, &tmp, sizeof(tmp));
|
|
529 | 529 |
} |
530 | 530 |
|
531 | 531 |
return 1; |
... | ... | |
540 | 540 |
addr += ohci->localmem_base; |
541 | 541 |
|
542 | 542 |
for (i = 0; i < num; i++, buf++, addr += sizeof(*buf)) { |
543 |
dma_memory_read(ohci->dma, addr, buf, sizeof(*buf));
|
|
543 |
dma_memory_read(ohci->as, addr, buf, sizeof(*buf));
|
|
544 | 544 |
*buf = le16_to_cpu(*buf); |
545 | 545 |
} |
546 | 546 |
|
... | ... | |
557 | 557 |
|
558 | 558 |
for (i = 0; i < num; i++, buf++, addr += sizeof(*buf)) { |
559 | 559 |
uint16_t tmp = cpu_to_le16(*buf); |
560 |
dma_memory_write(ohci->dma, addr, &tmp, sizeof(tmp));
|
|
560 |
dma_memory_write(ohci->as, addr, &tmp, sizeof(tmp));
|
|
561 | 561 |
} |
562 | 562 |
|
563 | 563 |
return 1; |
... | ... | |
585 | 585 |
static inline int ohci_read_hcca(OHCIState *ohci, |
586 | 586 |
dma_addr_t addr, struct ohci_hcca *hcca) |
587 | 587 |
{ |
588 |
dma_memory_read(ohci->dma, addr + ohci->localmem_base, hcca, sizeof(*hcca));
|
|
588 |
dma_memory_read(ohci->as, addr + ohci->localmem_base, hcca, sizeof(*hcca));
|
|
589 | 589 |
return 1; |
590 | 590 |
} |
591 | 591 |
|
... | ... | |
617 | 617 |
static inline int ohci_put_hcca(OHCIState *ohci, |
618 | 618 |
dma_addr_t addr, struct ohci_hcca *hcca) |
619 | 619 |
{ |
620 |
dma_memory_write(ohci->dma,
|
|
620 |
dma_memory_write(ohci->as,
|
|
621 | 621 |
addr + ohci->localmem_base + HCCA_WRITEBACK_OFFSET, |
622 | 622 |
(char *)hcca + HCCA_WRITEBACK_OFFSET, |
623 | 623 |
HCCA_WRITEBACK_SIZE); |
... | ... | |
634 | 634 |
n = 0x1000 - (ptr & 0xfff); |
635 | 635 |
if (n > len) |
636 | 636 |
n = len; |
637 |
dma_memory_rw(ohci->dma, ptr + ohci->localmem_base, buf, n, dir);
|
|
637 |
dma_memory_rw(ohci->as, ptr + ohci->localmem_base, buf, n, dir);
|
|
638 | 638 |
if (n == len) |
639 | 639 |
return; |
640 | 640 |
ptr = td->be & ~0xfffu; |
641 | 641 |
buf += n; |
642 |
dma_memory_rw(ohci->dma, ptr + ohci->localmem_base, buf, len - n, dir);
|
|
642 |
dma_memory_rw(ohci->as, ptr + ohci->localmem_base, buf, len - n, dir);
|
|
643 | 643 |
} |
644 | 644 |
|
645 | 645 |
/* Read/Write the contents of an ISO TD from/to main memory. */ |
... | ... | |
653 | 653 |
n = 0x1000 - (ptr & 0xfff); |
654 | 654 |
if (n > len) |
655 | 655 |
n = len; |
656 |
dma_memory_rw(ohci->dma, ptr + ohci->localmem_base, buf, n, dir);
|
|
656 |
dma_memory_rw(ohci->as, ptr + ohci->localmem_base, buf, n, dir);
|
|
657 | 657 |
if (n == len) |
658 | 658 |
return; |
659 | 659 |
ptr = end_addr & ~0xfffu; |
660 | 660 |
buf += n; |
661 |
dma_memory_rw(ohci->dma, ptr + ohci->localmem_base, buf, len - n, dir);
|
|
661 |
dma_memory_rw(ohci->as, ptr + ohci->localmem_base, buf, len - n, dir);
|
|
662 | 662 |
} |
663 | 663 |
|
664 | 664 |
static void ohci_process_lists(OHCIState *ohci, int completion); |
... | ... | |
1788 | 1788 |
static int usb_ohci_init(OHCIState *ohci, DeviceState *dev, |
1789 | 1789 |
int num_ports, dma_addr_t localmem_base, |
1790 | 1790 |
char *masterbus, uint32_t firstport, |
1791 |
DMAContext *dma)
|
|
1791 |
AddressSpace *as)
|
|
1792 | 1792 |
{ |
1793 | 1793 |
int i; |
1794 | 1794 |
|
1795 |
ohci->dma = dma;
|
|
1795 |
ohci->as = as;
|
|
1796 | 1796 |
|
1797 | 1797 |
if (usb_frame_time == 0) { |
1798 | 1798 |
#ifdef OHCI_TIME_WARP |
... | ... | |
1859 | 1859 |
|
1860 | 1860 |
if (usb_ohci_init(&ohci->state, &dev->qdev, ohci->num_ports, 0, |
1861 | 1861 |
ohci->masterbus, ohci->firstport, |
1862 |
pci_dma_context(dev)) != 0) {
|
|
1862 |
pci_get_address_space(dev)) != 0) {
|
|
1863 | 1863 |
return -1; |
1864 | 1864 |
} |
1865 | 1865 |
ohci->state.irq = ohci->pci_dev.irq[0]; |
... | ... | |
1882 | 1882 |
|
1883 | 1883 |
/* Cannot fail as we pass NULL for masterbus */ |
1884 | 1884 |
usb_ohci_init(&s->ohci, &dev->qdev, s->num_ports, s->dma_offset, NULL, 0, |
1885 |
&dma_context_memory);
|
|
1885 |
&address_space_memory);
|
|
1886 | 1886 |
sysbus_init_irq(dev, &s->ohci.irq); |
1887 | 1887 |
sysbus_init_mmio(dev, &s->ohci.mem); |
1888 | 1888 |
|
Also available in: Unified diff