~jderose/ubuntu/raring/qemu/vde-again

« back to all changes in this revision

Viewing changes to hw/sparc32_dma.c

  • Committer: Bazaar Package Importer
  • Author(s): Riku Voipio, Josh Triplett, Riku Voipio
  • Date: 2009-07-29 13:28:05 UTC
  • mfrom: (1.4.1 upstream)
  • mto: (12.1.1 sid) (10.1.13 sid)
  • mto: This revision was merged to the branch mainline in revision 13.
  • Revision ID: james.westby@ubuntu.com-20090729132805-cau7rfexh7dawyb8
Tags: 0.10.50+git20090729-1
[ Josh Triplett ]
* Remove myself from Uploaders.

[ Riku Voipio ]
* new upstream RC version
* nuke all linux-user patches (applied upstream)
  06_exit_segfault
  12_signal_powerpc_support
  21_net_soopts
  30_syscall_ipc
  32_syscall_sysctl
  35_syscall_sockaddr
  48_signal_terminate
  55_unmux_socketcall
* nuke all other applied-upstream patches
  01_nostrip (better version upstream)
  07_i386_exec_name (can be reintroduced in debian/rules)
  50_linuxbios_isa_bios_ram (shouldn't be needed anymore)
  51_linuxbios_piix_ram_size (applied)
  56_dhcp (crap)
  60_ppc_ld (reintroduce if needed)
  64_ppc_asm_constraints (ditto)
  66_tls_ld.patch (ditto)
  81_compile_dtb.patch (applied upstream)
  82_qemu-img_decimal (ditto)
* move to git
* simplify build rules
* Correct my email address

Show diffs side-by-side

added added

removed removed

Lines of Context:
21
21
 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
22
22
 * THE SOFTWARE.
23
23
 */
 
24
 
24
25
#include "hw.h"
25
26
#include "sparc32_dma.h"
26
27
#include "sun4m.h"
 
28
#include "sysbus.h"
27
29
 
28
30
/* debug DMA */
29
31
//#define DEBUG_DMA
37
39
 */
38
40
 
39
41
#ifdef DEBUG_DMA
40
 
#define DPRINTF(fmt, args...) \
41
 
do { printf("DMA: " fmt , ##args); } while (0)
 
42
#define DPRINTF(fmt, ...)                               \
 
43
    do { printf("DMA: " fmt , ## __VA_ARGS__); } while (0)
42
44
#else
43
 
#define DPRINTF(fmt, args...)
 
45
#define DPRINTF(fmt, ...)
44
46
#endif
45
47
 
46
48
#define DMA_REGS 4
60
62
typedef struct DMAState DMAState;
61
63
 
62
64
struct DMAState {
 
65
    SysBusDevice busdev;
63
66
    uint32_t dmaregs[DMA_REGS];
64
67
    qemu_irq irq;
65
68
    void *iommu;
242
245
}
243
246
 
244
247
void *sparc32_dma_init(target_phys_addr_t daddr, qemu_irq parent_irq,
245
 
                       void *iommu, qemu_irq **dev_irq, qemu_irq **reset)
246
 
{
247
 
    DMAState *s;
 
248
                       void *iommu, qemu_irq *dev_irq, qemu_irq **reset)
 
249
{
 
250
    DeviceState *dev;
 
251
    SysBusDevice *s;
 
252
    DMAState *d;
 
253
 
 
254
    dev = qdev_create(NULL, "sparc32_dma");
 
255
    qdev_prop_set_ptr(dev, "iommu_opaque", iommu);
 
256
    qdev_init(dev);
 
257
    s = sysbus_from_qdev(dev);
 
258
    sysbus_connect_irq(s, 0, parent_irq);
 
259
    *dev_irq = qdev_get_gpio_in(dev, 0);
 
260
    sysbus_mmio_map(s, 0, daddr);
 
261
 
 
262
    d = FROM_SYSBUS(DMAState, s);
 
263
    *reset = &d->dev_reset;
 
264
 
 
265
    return d;
 
266
}
 
267
 
 
268
static void sparc32_dma_init1(SysBusDevice *dev)
 
269
{
 
270
    DMAState *s = FROM_SYSBUS(DMAState, dev);
248
271
    int dma_io_memory;
249
272
 
250
 
    s = qemu_mallocz(sizeof(DMAState));
251
 
 
252
 
    s->irq = parent_irq;
253
 
    s->iommu = iommu;
254
 
 
255
 
    dma_io_memory = cpu_register_io_memory(0, dma_mem_read, dma_mem_write, s);
256
 
    cpu_register_physical_memory(daddr, DMA_SIZE, dma_io_memory);
257
 
 
258
 
    register_savevm("sparc32_dma", daddr, 2, dma_save, dma_load, s);
 
273
    sysbus_init_irq(dev, &s->irq);
 
274
 
 
275
    dma_io_memory = cpu_register_io_memory(dma_mem_read, dma_mem_write, s);
 
276
    sysbus_init_mmio(dev, DMA_SIZE, dma_io_memory);
 
277
 
 
278
    register_savevm("sparc32_dma", -1, 2, dma_save, dma_load, s);
259
279
    qemu_register_reset(dma_reset, s);
260
 
    *dev_irq = qemu_allocate_irqs(dma_set_irq, s, 1);
261
 
 
262
 
    *reset = &s->dev_reset;
263
 
 
264
 
    return s;
265
 
}
 
280
 
 
281
    qdev_init_gpio_in(&dev->qdev, dma_set_irq, 1);
 
282
}
 
283
 
 
284
static SysBusDeviceInfo sparc32_dma_info = {
 
285
    .init = sparc32_dma_init1,
 
286
    .qdev.name  = "sparc32_dma",
 
287
    .qdev.size  = sizeof(DMAState),
 
288
    .qdev.props = (Property[]) {
 
289
        {
 
290
            .name = "iommu_opaque",
 
291
            .info = &qdev_prop_ptr,
 
292
            .offset = offsetof(DMAState, iommu),
 
293
        },
 
294
        {/* end of property list */}
 
295
    }
 
296
};
 
297
 
 
298
static void sparc32_dma_register_devices(void)
 
299
{
 
300
    sysbus_register_withprop(&sparc32_dma_info);
 
301
}
 
302
 
 
303
device_init(sparc32_dma_register_devices)