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