Tsunami.py revision 3847
16166Ssteve.reinhardt@amd.comfrom m5.params import *
26166Ssteve.reinhardt@amd.comfrom m5.proxy import *
36166Ssteve.reinhardt@amd.comfrom Device import BasicPioDevice, IsaFake, BadAddr
46166Ssteve.reinhardt@amd.comfrom Platform import Platform
56166Ssteve.reinhardt@amd.comfrom AlphaConsole import AlphaConsole
66166Ssteve.reinhardt@amd.comfrom Uart import Uart8250
76166Ssteve.reinhardt@amd.comfrom Pci import PciConfigAll
86166Ssteve.reinhardt@amd.comfrom BadDevice import BadDevice
96166Ssteve.reinhardt@amd.com
106166Ssteve.reinhardt@amd.comclass TsunamiCChip(BasicPioDevice):
116166Ssteve.reinhardt@amd.com    type = 'TsunamiCChip'
126166Ssteve.reinhardt@amd.com    tsunami = Param.Tsunami(Parent.any, "Tsunami")
136166Ssteve.reinhardt@amd.com
146166Ssteve.reinhardt@amd.comclass TsunamiIO(BasicPioDevice):
156166Ssteve.reinhardt@amd.com    type = 'TsunamiIO'
166166Ssteve.reinhardt@amd.com    time = Param.UInt64(1136073600,
176166Ssteve.reinhardt@amd.com        "System time to use (0 for actual time, default is 1/1/06)")
186166Ssteve.reinhardt@amd.com    tsunami = Param.Tsunami(Parent.any, "Tsunami")
196166Ssteve.reinhardt@amd.com    frequency = Param.Frequency('1024Hz', "frequency of interrupts")
206166Ssteve.reinhardt@amd.com
216166Ssteve.reinhardt@amd.comclass TsunamiPChip(BasicPioDevice):
226166Ssteve.reinhardt@amd.com    type = 'TsunamiPChip'
236166Ssteve.reinhardt@amd.com    tsunami = Param.Tsunami(Parent.any, "Tsunami")
246166Ssteve.reinhardt@amd.com
256166Ssteve.reinhardt@amd.comclass Tsunami(Platform):
266166Ssteve.reinhardt@amd.com    type = 'Tsunami'
276166Ssteve.reinhardt@amd.com    system = Param.System(Parent.any, "system")
286166Ssteve.reinhardt@amd.com
296166Ssteve.reinhardt@amd.com    cchip = TsunamiCChip(pio_addr=0x801a0000000)
306166Ssteve.reinhardt@amd.com    pchip = TsunamiPChip(pio_addr=0x80180000000)
316928SBrad.Beckmann@amd.com    pciconfig = PciConfigAll()
326928SBrad.Beckmann@amd.com    fake_sm_chip = IsaFake(pio_addr=0x801fc000370)
336928SBrad.Beckmann@amd.com
346166Ssteve.reinhardt@amd.com    fake_uart1 = IsaFake(pio_addr=0x801fc0002f8)
356928SBrad.Beckmann@amd.com    fake_uart2 = IsaFake(pio_addr=0x801fc0003e8)
366928SBrad.Beckmann@amd.com    fake_uart3 = IsaFake(pio_addr=0x801fc0002e8)
376928SBrad.Beckmann@amd.com    fake_uart4 = IsaFake(pio_addr=0x801fc0003f0)
386928SBrad.Beckmann@amd.com
396928SBrad.Beckmann@amd.com    fake_ppc = IsaFake(pio_addr=0x801fc0003bb)
406928SBrad.Beckmann@amd.com
416928SBrad.Beckmann@amd.com    fake_OROM = IsaFake(pio_addr=0x800000a0000, pio_size=0x60000)
426928SBrad.Beckmann@amd.com
436928SBrad.Beckmann@amd.com    fake_pnp_addr = IsaFake(pio_addr=0x801fc000279)
446928SBrad.Beckmann@amd.com    fake_pnp_write = IsaFake(pio_addr=0x801fc000a79)
456928SBrad.Beckmann@amd.com    fake_pnp_read0 = IsaFake(pio_addr=0x801fc000203)
466928SBrad.Beckmann@amd.com    fake_pnp_read1 = IsaFake(pio_addr=0x801fc000243)
476928SBrad.Beckmann@amd.com    fake_pnp_read2 = IsaFake(pio_addr=0x801fc000283)
486928SBrad.Beckmann@amd.com    fake_pnp_read3 = IsaFake(pio_addr=0x801fc0002c3)
496928SBrad.Beckmann@amd.com    fake_pnp_read4 = IsaFake(pio_addr=0x801fc000303)
507570SBrad.Beckmann@amd.com    fake_pnp_read5 = IsaFake(pio_addr=0x801fc000343)
516928SBrad.Beckmann@amd.com    fake_pnp_read6 = IsaFake(pio_addr=0x801fc000383)
527570SBrad.Beckmann@amd.com    fake_pnp_read7 = IsaFake(pio_addr=0x801fc0003c3)
536928SBrad.Beckmann@amd.com
546928SBrad.Beckmann@amd.com    fake_ata0 = IsaFake(pio_addr=0x801fc0001f0)
556928SBrad.Beckmann@amd.com    fake_ata1 = IsaFake(pio_addr=0x801fc000170)
566928SBrad.Beckmann@amd.com
576928SBrad.Beckmann@amd.com    fb = BadDevice(pio_addr=0x801fc0003d0, devicename='FrameBuffer')
587570SBrad.Beckmann@amd.com    io = TsunamiIO(pio_addr=0x801fc000000)
597570SBrad.Beckmann@amd.com    uart = Uart8250(pio_addr=0x801fc0003f8)
607570SBrad.Beckmann@amd.com    console = AlphaConsole(pio_addr=0x80200000000, disk=Parent.simple_disk)
617570SBrad.Beckmann@amd.com
627570SBrad.Beckmann@amd.com    # Attach I/O devices to specified bus object.  Can't do this
637570SBrad.Beckmann@amd.com    # earlier, since the bus object itself is typically defined at the
647570SBrad.Beckmann@amd.com    # System level.
657570SBrad.Beckmann@amd.com    def attachIO(self, bus):
667570SBrad.Beckmann@amd.com        self.cchip.pio = bus.port
677570SBrad.Beckmann@amd.com        self.pchip.pio = bus.port
687570SBrad.Beckmann@amd.com        self.pciconfig.pio = bus.default
697570SBrad.Beckmann@amd.com        bus.responder_set = True
707570SBrad.Beckmann@amd.com        bus.responder = self.pciconfig
716928SBrad.Beckmann@amd.com        self.fake_sm_chip.pio = bus.port
726928SBrad.Beckmann@amd.com        self.fake_uart1.pio = bus.port
736289Snate@binkert.org        self.fake_uart2.pio = bus.port
746166Ssteve.reinhardt@amd.com        self.fake_uart3.pio = bus.port
757570SBrad.Beckmann@amd.com        self.fake_uart4.pio = bus.port
766928SBrad.Beckmann@amd.com        self.fake_ppc.pio = bus.port
777570SBrad.Beckmann@amd.com        self.fake_OROM.pio = bus.port
786928SBrad.Beckmann@amd.com        self.fake_pnp_addr.pio = bus.port
796928SBrad.Beckmann@amd.com        self.fake_pnp_write.pio = bus.port
806928SBrad.Beckmann@amd.com        self.fake_pnp_read0.pio = bus.port
816928SBrad.Beckmann@amd.com        self.fake_pnp_read1.pio = bus.port
826928SBrad.Beckmann@amd.com        self.fake_pnp_read2.pio = bus.port
836928SBrad.Beckmann@amd.com        self.fake_pnp_read3.pio = bus.port
846928SBrad.Beckmann@amd.com        self.fake_pnp_read4.pio = bus.port
856928SBrad.Beckmann@amd.com        self.fake_pnp_read5.pio = bus.port
866928SBrad.Beckmann@amd.com        self.fake_pnp_read6.pio = bus.port
876928SBrad.Beckmann@amd.com        self.fake_pnp_read7.pio = bus.port
886928SBrad.Beckmann@amd.com        self.fake_ata0.pio = bus.port
896928SBrad.Beckmann@amd.com        self.fake_ata1.pio = bus.port
906928SBrad.Beckmann@amd.com        self.fb.pio = bus.port
916166Ssteve.reinhardt@amd.com        self.io.pio = bus.port
926166Ssteve.reinhardt@amd.com        self.uart.pio = bus.port
936928SBrad.Beckmann@amd.com        self.console.pio = bus.port
946928SBrad.Beckmann@amd.com