110915Sandreas.sandberg@arm.com/* 210915Sandreas.sandberg@arm.com * Copyright (c) 2014-2015 ARM Limited 310915Sandreas.sandberg@arm.com * All rights reserved 410915Sandreas.sandberg@arm.com * 510915Sandreas.sandberg@arm.com * Licensed under the Apache License, Version 2.0 (the "License"); 610915Sandreas.sandberg@arm.com * you may not use this file except in compliance with the License. 710915Sandreas.sandberg@arm.com * You may obtain a copy of the License at 810915Sandreas.sandberg@arm.com * 910915Sandreas.sandberg@arm.com * http://www.apache.org/licenses/LICENSE-2.0 1010915Sandreas.sandberg@arm.com * 1110915Sandreas.sandberg@arm.com * Unless required by applicable law or agreed to in writing, software 1210915Sandreas.sandberg@arm.com * distributed under the License is distributed on an "AS IS" BASIS, 1310915Sandreas.sandberg@arm.com * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1410915Sandreas.sandberg@arm.com * See the License for the specific language governing permissions and 1510915Sandreas.sandberg@arm.com * limitations under the License. 1610915Sandreas.sandberg@arm.com * 1710915Sandreas.sandberg@arm.com * Authors: Andreas Sandberg 1810915Sandreas.sandberg@arm.com */ 1910915Sandreas.sandberg@arm.com 2010915Sandreas.sandberg@arm.com#ifndef _LIBNOMALIMODEL_MALI_MIDGARD_HH 2110915Sandreas.sandberg@arm.com#define _LIBNOMALIMODEL_MALI_MIDGARD_HH 2210915Sandreas.sandberg@arm.com 2310915Sandreas.sandberg@arm.com#include "gpu.hh" 2410915Sandreas.sandberg@arm.com 2510915Sandreas.sandberg@arm.com#include "gpucontrol.hh" 2610915Sandreas.sandberg@arm.com#include "jobcontrol.hh" 2710915Sandreas.sandberg@arm.com#include "mmu.hh" 2810915Sandreas.sandberg@arm.com 2910915Sandreas.sandberg@arm.comnamespace NoMali { 3010915Sandreas.sandberg@arm.com 3110915Sandreas.sandberg@arm.com/** 3210915Sandreas.sandberg@arm.com * Base class for Midgard based GPUs 3310915Sandreas.sandberg@arm.com */ 3410915Sandreas.sandberg@arm.comclass MaliMidgard 3510915Sandreas.sandberg@arm.com : public GPU 3610915Sandreas.sandberg@arm.com{ 3710915Sandreas.sandberg@arm.com public: 3810915Sandreas.sandberg@arm.com MaliMidgard(unsigned gpuType, 3910915Sandreas.sandberg@arm.com unsigned major, unsigned minor, unsigned status); 4010915Sandreas.sandberg@arm.com MaliMidgard(uint32_t gpuId); 4110915Sandreas.sandberg@arm.com virtual ~MaliMidgard(); 4210915Sandreas.sandberg@arm.com 4310915Sandreas.sandberg@arm.com 4410915Sandreas.sandberg@arm.com protected: 4510915Sandreas.sandberg@arm.com class GPUControlSpec 4610915Sandreas.sandberg@arm.com : public GPUControl 4710915Sandreas.sandberg@arm.com { 4810915Sandreas.sandberg@arm.com public: 4910915Sandreas.sandberg@arm.com GPUControlSpec(MaliMidgard &_gpu) 5010915Sandreas.sandberg@arm.com : GPUControl(_gpu), midgard(_gpu) {} 5110915Sandreas.sandberg@arm.com 5210915Sandreas.sandberg@arm.com void reset() override; 5310915Sandreas.sandberg@arm.com 5410915Sandreas.sandberg@arm.com private: 5510915Sandreas.sandberg@arm.com MaliMidgard &midgard; 5610915Sandreas.sandberg@arm.com }; 5710915Sandreas.sandberg@arm.com 5810915Sandreas.sandberg@arm.com virtual void setupControlIdRegisters(RegVector ®s); 5910915Sandreas.sandberg@arm.com 6010915Sandreas.sandberg@arm.com GPUControlSpec gpuControl; 6110915Sandreas.sandberg@arm.com JobControl jobControl; 6210915Sandreas.sandberg@arm.com MMU mmu; 6310915Sandreas.sandberg@arm.com 6410915Sandreas.sandberg@arm.com private: 6510915Sandreas.sandberg@arm.com const uint32_t gpuId; 6610915Sandreas.sandberg@arm.com}; 6710915Sandreas.sandberg@arm.com 6810915Sandreas.sandberg@arm.com} 6910915Sandreas.sandberg@arm.com 7010915Sandreas.sandberg@arm.com#endif // _LIBNOMALIMODEL_MALI_MIDGARD_HH 71