south_bridge.hh revision 5446
111988Sandreas.sandberg@arm.com/* 28839Sandreas.hansson@arm.com * Copyright (c) 2008 The Regents of The University of Michigan 38839Sandreas.hansson@arm.com * All rights reserved. 48839Sandreas.hansson@arm.com * 58839Sandreas.hansson@arm.com * Redistribution and use in source and binary forms, with or without 68839Sandreas.hansson@arm.com * modification, are permitted provided that the following conditions are 78839Sandreas.hansson@arm.com * met: redistributions of source code must retain the above copyright 88839Sandreas.hansson@arm.com * notice, this list of conditions and the following disclaimer; 98839Sandreas.hansson@arm.com * redistributions in binary form must reproduce the above copyright 108839Sandreas.hansson@arm.com * notice, this list of conditions and the following disclaimer in the 118839Sandreas.hansson@arm.com * documentation and/or other materials provided with the distribution; 128839Sandreas.hansson@arm.com * neither the name of the copyright holders nor the names of its 133101Sstever@eecs.umich.edu * contributors may be used to endorse or promote products derived from 148579Ssteve.reinhardt@amd.com * this software without specific prior written permission. 153101Sstever@eecs.umich.edu * 163101Sstever@eecs.umich.edu * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 173101Sstever@eecs.umich.edu * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 183101Sstever@eecs.umich.edu * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 193101Sstever@eecs.umich.edu * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 203101Sstever@eecs.umich.edu * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 213101Sstever@eecs.umich.edu * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 223101Sstever@eecs.umich.edu * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 233101Sstever@eecs.umich.edu * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 243101Sstever@eecs.umich.edu * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 253101Sstever@eecs.umich.edu * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 263101Sstever@eecs.umich.edu * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 273101Sstever@eecs.umich.edu * 283101Sstever@eecs.umich.edu * Authors: Gabe Black 293101Sstever@eecs.umich.edu */ 303101Sstever@eecs.umich.edu 313101Sstever@eecs.umich.edu#ifndef __DEV_X86_SOUTH_BRIDGE_SOUTH_BRIDGE_HH__ 323101Sstever@eecs.umich.edu#define __DEV_X86_SOUTH_BRIDGE_SOUTH_BRIDGE_HH__ 333101Sstever@eecs.umich.edu 343101Sstever@eecs.umich.edu#include "base/range_map.hh" 353101Sstever@eecs.umich.edu#include "dev/io_device.hh" 363101Sstever@eecs.umich.edu#include "dev/x86/south_bridge/cmos.hh" 373101Sstever@eecs.umich.edu#include "dev/x86/south_bridge/i8254.hh" 383101Sstever@eecs.umich.edu#include "dev/x86/south_bridge/i8259.hh" 393101Sstever@eecs.umich.edu#include "dev/x86/south_bridge/speaker.hh" 403101Sstever@eecs.umich.edu#include "dev/x86/south_bridge/sub_device.hh" 413101Sstever@eecs.umich.edu#include "params/SouthBridge.hh" 427778Sgblack@eecs.umich.edu 438839Sandreas.hansson@arm.comclass SouthBridge : public PioDevice 443101Sstever@eecs.umich.edu{ 453101Sstever@eecs.umich.edu protected: 463101Sstever@eecs.umich.edu AddrRangeList rangeList; 473101Sstever@eecs.umich.edu 483101Sstever@eecs.umich.edu typedef range_map<Addr, X86ISA::SubDevice *> RangeMap; 493101Sstever@eecs.umich.edu typedef RangeMap::iterator RangeMapIt; 503101Sstever@eecs.umich.edu RangeMap rangeMap; 513101Sstever@eecs.umich.edu 523101Sstever@eecs.umich.edu 533101Sstever@eecs.umich.edu void addDevice(X86ISA::SubDevice &); 543101Sstever@eecs.umich.edu 553101Sstever@eecs.umich.edu public: 563101Sstever@eecs.umich.edu // PICs 573101Sstever@eecs.umich.edu X86ISA::I8259 pic1; 583101Sstever@eecs.umich.edu X86ISA::I8259 pic2; 593101Sstever@eecs.umich.edu 603101Sstever@eecs.umich.edu // I8254 Programmable Interval Timer 613101Sstever@eecs.umich.edu X86ISA::I8254 pit; 623885Sbinkertn@umich.edu 633885Sbinkertn@umich.edu // CMOS apperature 644762Snate@binkert.org X86ISA::Cmos cmos; 653885Sbinkertn@umich.edu 663885Sbinkertn@umich.edu // PC speaker 677528Ssteve.reinhardt@amd.com X86ISA::Speaker speaker; 683885Sbinkertn@umich.edu 694380Sbinkertn@umich.edu public: 704167Sbinkertn@umich.edu 713102Sstever@eecs.umich.edu void addressRanges(AddrRangeList &range_list); 723101Sstever@eecs.umich.edu 734762Snate@binkert.org Tick read(PacketPtr pkt); 744762Snate@binkert.org Tick write(PacketPtr pkt); 754762Snate@binkert.org 764762Snate@binkert.org typedef SouthBridgeParams Params; 774762Snate@binkert.org SouthBridge(const Params *p); 784762Snate@binkert.org 794762Snate@binkert.org const Params * 804762Snate@binkert.org params() const 814762Snate@binkert.org { 825033Smilesck@eecs.umich.edu return dynamic_cast<const Params *>(_params); 835033Smilesck@eecs.umich.edu } 845033Smilesck@eecs.umich.edu}; 855033Smilesck@eecs.umich.edu 865033Smilesck@eecs.umich.edu#endif //__DEV_X86_SOUTH_BRIDGE_SOUTH_BRIDGE_HH__ 875033Smilesck@eecs.umich.edu