1/*
2 * Copyright 2009 Haiku Inc.
3 * All rights reserved. Distributed under the terms of the MIT License.
4 */
5#ifndef _KERNEL_ARCH_MIPSEL_PLATFORM_H
6#define _KERNEL_ARCH_MIPSEL_PLATFORM_H
7
8#include <arch/platform.h>
9
10#warning IMPLEMENT arch_platform.h
11
12struct real_time_data;
13
14enum mipsel_platform_type {
15	MIPSEL_PLATFORM_ROUTERBOARD = 0,
16};
17
18namespace BPrivate {
19
20class MipselPlatform {
21public:
22	MipselPlatform(mipsel_platform_type platformType);
23	virtual ~MipselPlatform();
24
25	static MipselPlatform* Default();
26
27	inline mipsel_platform_type PlatformType() const { return fPlatformType; }
28
29	virtual status_t Init(struct kernel_args* kernelArgs) = 0;
30	virtual status_t InitSerialDebug(struct kernel_args* kernelArgs) = 0;
31	virtual status_t InitPostVM(struct kernel_args* kernelArgs) = 0;
32	virtual status_t InitRTC(struct kernel_args* kernelArgs,
33		struct real_time_data* data) = 0;
34
35	virtual char SerialDebugGetChar() = 0;
36	virtual void SerialDebugPutChar(char c) = 0;
37
38	virtual	void SetHardwareRTC(uint32 seconds) = 0;
39	virtual	uint32 GetHardwareRTC() = 0;
40
41	virtual	void ShutDown(bool reboot) = 0;
42
43private:
44	mipsel_platform_type	fPlatformType;
45};
46
47}	// namespace BPrivate
48
49using BPrivate::MipselPlatform;
50
51
52#endif /* _KERNEL_ARCH_MIPSEL_PLATFORM_H */
53
54