base_gic.hh revision 9525
19525SAndreas.Sandberg@ARM.com/* 29525SAndreas.Sandberg@ARM.com * Copyright (c) 2012 ARM Limited 39525SAndreas.Sandberg@ARM.com * All rights reserved 49525SAndreas.Sandberg@ARM.com * 59525SAndreas.Sandberg@ARM.com * The license below extends only to copyright in the software and shall 69525SAndreas.Sandberg@ARM.com * not be construed as granting a license to any other intellectual 79525SAndreas.Sandberg@ARM.com * property including but not limited to intellectual property relating 89525SAndreas.Sandberg@ARM.com * to a hardware implementation of the functionality of the software 99525SAndreas.Sandberg@ARM.com * licensed hereunder. You may use the software subject to the license 109525SAndreas.Sandberg@ARM.com * terms below provided that you ensure that this notice is replicated 119525SAndreas.Sandberg@ARM.com * unmodified and in its entirety in all distributions of the software, 129525SAndreas.Sandberg@ARM.com * modified or unmodified, in source code or in binary form. 139525SAndreas.Sandberg@ARM.com * 149525SAndreas.Sandberg@ARM.com * Redistribution and use in source and binary forms, with or without 159525SAndreas.Sandberg@ARM.com * modification, are permitted provided that the following conditions are 169525SAndreas.Sandberg@ARM.com * met: redistributions of source code must retain the above copyright 179525SAndreas.Sandberg@ARM.com * notice, this list of conditions and the following disclaimer; 189525SAndreas.Sandberg@ARM.com * redistributions in binary form must reproduce the above copyright 199525SAndreas.Sandberg@ARM.com * notice, this list of conditions and the following disclaimer in the 209525SAndreas.Sandberg@ARM.com * documentation and/or other materials provided with the distribution; 219525SAndreas.Sandberg@ARM.com * neither the name of the copyright holders nor the names of its 229525SAndreas.Sandberg@ARM.com * contributors may be used to endorse or promote products derived from 239525SAndreas.Sandberg@ARM.com * this software without specific prior written permission. 249525SAndreas.Sandberg@ARM.com * 259525SAndreas.Sandberg@ARM.com * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 269525SAndreas.Sandberg@ARM.com * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 279525SAndreas.Sandberg@ARM.com * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 289525SAndreas.Sandberg@ARM.com * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 299525SAndreas.Sandberg@ARM.com * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 309525SAndreas.Sandberg@ARM.com * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 319525SAndreas.Sandberg@ARM.com * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 329525SAndreas.Sandberg@ARM.com * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 339525SAndreas.Sandberg@ARM.com * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 349525SAndreas.Sandberg@ARM.com * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 359525SAndreas.Sandberg@ARM.com * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 369525SAndreas.Sandberg@ARM.com * 379525SAndreas.Sandberg@ARM.com * Authors: Andreas Sandberg 389525SAndreas.Sandberg@ARM.com */ 399525SAndreas.Sandberg@ARM.com 409525SAndreas.Sandberg@ARM.com/** @file 419525SAndreas.Sandberg@ARM.com * Base class for ARM GIC implementations 429525SAndreas.Sandberg@ARM.com */ 439525SAndreas.Sandberg@ARM.com 449525SAndreas.Sandberg@ARM.com#ifndef __DEV_ARM_BASE_GIC_H__ 459525SAndreas.Sandberg@ARM.com#define __DEV_ARM_BASE_GIC_H__ 469525SAndreas.Sandberg@ARM.com 479525SAndreas.Sandberg@ARM.com#include "dev/io_device.hh" 489525SAndreas.Sandberg@ARM.com 499525SAndreas.Sandberg@ARM.comclass Platform; 509525SAndreas.Sandberg@ARM.com 519525SAndreas.Sandberg@ARM.comclass BaseGic : public PioDevice 529525SAndreas.Sandberg@ARM.com{ 539525SAndreas.Sandberg@ARM.com public: 549525SAndreas.Sandberg@ARM.com typedef struct BaseGicParams Params; 559525SAndreas.Sandberg@ARM.com 569525SAndreas.Sandberg@ARM.com BaseGic(const Params *p); 579525SAndreas.Sandberg@ARM.com virtual ~BaseGic(); 589525SAndreas.Sandberg@ARM.com 599525SAndreas.Sandberg@ARM.com const Params * params() const; 609525SAndreas.Sandberg@ARM.com 619525SAndreas.Sandberg@ARM.com /** 629525SAndreas.Sandberg@ARM.com * Post an interrupt from a device that is connected to the GIC. 639525SAndreas.Sandberg@ARM.com * 649525SAndreas.Sandberg@ARM.com * Depending on the configuration, the GIC will pass this interrupt 659525SAndreas.Sandberg@ARM.com * on through to a CPU. 669525SAndreas.Sandberg@ARM.com * 679525SAndreas.Sandberg@ARM.com * @param num number of interrupt to send 689525SAndreas.Sandberg@ARM.com */ 699525SAndreas.Sandberg@ARM.com virtual void sendInt(uint32_t num) = 0; 709525SAndreas.Sandberg@ARM.com 719525SAndreas.Sandberg@ARM.com /** 729525SAndreas.Sandberg@ARM.com * Interface call for private peripheral interrupts. 739525SAndreas.Sandberg@ARM.com * 749525SAndreas.Sandberg@ARM.com * @param num number of interrupt to send 759525SAndreas.Sandberg@ARM.com * @param cpu CPU to forward interrupt to 769525SAndreas.Sandberg@ARM.com */ 779525SAndreas.Sandberg@ARM.com virtual void sendPPInt(uint32_t num, uint32_t cpu) = 0; 789525SAndreas.Sandberg@ARM.com 799525SAndreas.Sandberg@ARM.com /** 809525SAndreas.Sandberg@ARM.com * Clear an interrupt from a device that is connected to the GIC. 819525SAndreas.Sandberg@ARM.com * 829525SAndreas.Sandberg@ARM.com * Depending on the configuration, the GIC may de-assert it's CPU 839525SAndreas.Sandberg@ARM.com * line. 849525SAndreas.Sandberg@ARM.com * 859525SAndreas.Sandberg@ARM.com * @param num number of interrupt to send 869525SAndreas.Sandberg@ARM.com */ 879525SAndreas.Sandberg@ARM.com virtual void clearInt(uint32_t num) = 0; 889525SAndreas.Sandberg@ARM.com 899525SAndreas.Sandberg@ARM.com protected: 909525SAndreas.Sandberg@ARM.com /** Platform this GIC belongs to. */ 919525SAndreas.Sandberg@ARM.com Platform *platform; 929525SAndreas.Sandberg@ARM.com}; 939525SAndreas.Sandberg@ARM.com 949525SAndreas.Sandberg@ARM.com#endif 95