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