1#ifndef ARCH_ARM_SOC_PXA_H 2#define ARCH_ARM_SOC_PXA_H 3 4class PXAInterruptController; 5 6#include "soc.h" 7 8#include <new> 9 10 11class PXAInterruptController : public InterruptController { 12public: 13 PXAInterruptController(uint32_t reg_base); 14 void EnableInterrupt(int32 irq); 15 void DisableInterrupt(int32 irq); 16 void HandleInterrupt(); 17 18protected: 19 area_id fRegArea; 20 uint32 *fRegBase; 21}; 22 23 24class PXATimer : public HardwareTimer { 25public: 26 void SetTimeout(bigtime_t timeout); 27 void Clear(); 28 bigtime_t Time(); 29 30 static status_t Init(uint32_t reg_base) { 31 PXATimer *timer = new(std::nothrow) PXATimer(reg_base); 32 // XXX implement InitCheck() functionality 33 return timer != NULL ? B_OK : B_NO_MEMORY; 34 } 35 36protected: 37 PXATimer(uint32_t reg_base); 38 39 area_id fRegArea; 40 uint32 *fRegBase; 41 bigtime_t fSystemTime; 42private: 43 static int32 _InterruptWrapper(void *data); 44 int32 HandleInterrupt(); 45}; 46 47 48#endif // ARCH_ARM_SOC_PXA_H 49