qemu-ppc
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-ppc] [PATCH v3 8/8] prep: Use i82378 PCI->ISA bridge for 'prep


From: Jan Kiszka
Subject: Re: [Qemu-ppc] [PATCH v3 8/8] prep: Use i82378 PCI->ISA bridge for 'prep' machine
Date: Fri, 13 Jan 2012 10:21:49 +0100
User-agent: Mozilla/5.0 (X11; U; Linux i686 (x86_64); de; rv:1.8.1.12) Gecko/20080226 SUSE/2.0.0.12-1.1 Thunderbird/2.0.0.12 Mnenhy/0.7.5.666

On 2012-01-13 04:09, Andreas Färber wrote:
> Speaker I/O, ISA bus, i8259 PIC, RTC and DMA are no longer set up
> individually by the machine. Effectively, no-op speaker I/O is replaced
> by pcspk; PIT and i82374 DMA are introduced.
> 
> Signed-off-by: Hervé Poussineau <address@hidden>
> 
> Remove related dead, alternative code.
> Access i8259 IRQs via ISA bus to resolve cyclic dependency with PCI
> host bridge.
> 
> Signed-off-by: Andreas Färber <address@hidden>
> Cc: Alexander Graf <address@hidden>
> Cc: Jan Kiszka <address@hidden>
> ---
>  hw/ppc_prep.c |   54 +++++++++++-------------------------------------------
>  1 files changed, 11 insertions(+), 43 deletions(-)
> 
> diff --git a/hw/ppc_prep.c b/hw/ppc_prep.c
> index 747539f..9485d45 100644
> --- a/hw/ppc_prep.c
> +++ b/hw/ppc_prep.c
> @@ -83,37 +83,9 @@ static const int ide_irq[2] = { 13, 13 };
>  static uint32_t ne2000_io[NE2000_NB_MAX] = { 0x300, 0x320, 0x340, 0x360, 
> 0x280, 0x380 };
>  static int ne2000_irq[NE2000_NB_MAX] = { 9, 10, 11, 3, 4, 5 };
>  
> -//static ISADevice *pit;
> -
>  /* ISA IO ports bridge */
>  #define PPC_IO_BASE 0x80000000
>  
> -#if 0
> -/* Speaker port 0x61 */
> -static int speaker_data_on;
> -static int dummy_refresh_clock;
> -#endif
> -
> -static void speaker_ioport_write (void *opaque, uint32_t addr, uint32_t val)
> -{
> -#if 0
> -    speaker_data_on = (val >> 1) & 1;
> -    pit_set_gate(pit, 2, val & 1);
> -#endif
> -}
> -
> -static uint32_t speaker_ioport_read (void *opaque, uint32_t addr)
> -{
> -#if 0
> -    int out;
> -    out = pit_get_out(pit, 2, qemu_get_clock_ns(vm_clock));
> -    dummy_refresh_clock ^= 1;
> -    return (speaker_data_on << 1) | pit_get_gate(pit, 2) | (out << 5) |
> -        (dummy_refresh_clock << 4);
> -#endif
> -    return 0;
> -}
> -
>  /* PCI intack register */
>  /* Read-only register (?) */
>  static void PPC_intack_write (void *opaque, target_phys_addr_t addr,
> @@ -526,6 +498,7 @@ static void ppc_prep_init (ram_addr_t ram_size,
>      SysBusDevice *sys;
>      PCIHostState *pcihost;
>      PCIBus *pci_bus;
> +    PCIDevice *pci;
>      ISABus *isa_bus;
>      qemu_irq *i8259;
>      qemu_irq *cpu_exit_irq;
> @@ -629,13 +602,9 @@ static void ppc_prep_init (ram_addr_t ram_size,
>          }
>      }
>  
> -    isa_mem_base = 0xc0000000;
>      if (PPC_INPUT(env) != PPC_FLAGS_INPUT_6xx) {
>          hw_error("Only 6xx bus is supported on PREP machine\n");
>      }
> -    /* Hmm, prep has no pci-isa bridge ??? */
> -    isa_bus = isa_bus_new(NULL, get_system_io());
> -    i8259 = i8259_init(isa_bus, first_cpu->irq_inputs[PPC6xx_INPUT_INT]);
>  
>      dev = qdev_create(NULL, "raven-pcihost");
>      sys = sysbus_from_qdev(dev);
> @@ -648,13 +617,21 @@ static void ppc_prep_init (ram_addr_t ram_size,
>          fprintf(stderr, "Couldn't create PCI host controller.\n");
>          exit(1);
>      }
> +
> +    /* PCI -> ISA bridge */
> +    pci = pci_create_simple(pci_bus, PCI_DEVFN(1, 0), "i82378");
> +    cpu_exit_irq = qemu_allocate_irqs(cpu_request_exit, NULL, 1);
> +    qdev_connect_gpio_out(&pci->qdev, 0,
> +                          first_cpu->irq_inputs[PPC6xx_INPUT_INT]);
> +    qdev_connect_gpio_out(&pci->qdev, 1, *cpu_exit_irq);
> +    isa_bus = DO_UPCAST(ISABus, qbus, qdev_get_child_bus(&pci->qdev, 
> "isa.0"));
> +
> +    i8259 = isa_bus->irqs;

I think this is unneeded. You only access i8259[8] later on for
initializing the m48t59. But that one should be creatable as ISA device
now (m48t59_init_isa), no? Please check.

Jan

-- 
Siemens AG, Corporate Technology, CT T DE IT 1
Corporate Competence Center Embedded Linux



reply via email to

[Prev in Thread] Current Thread [Next in Thread]