forked from genodelabs/genode
/
platform_session.h
68 lines (52 loc) · 1.56 KB
/
platform_session.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
/*
* \brief i.MX6 specific platform session
* \author Stefan Kalkowski <stefan.kalkowski@genode-labs.com
* \date 2013-04-29
*/
/*
* Copyright (C) 2013-2017 Genode Labs GmbH
*
* This file is part of the Genode OS framework, which is distributed
* under the terms of the GNU Affero General Public License version 3.
*/
#ifndef _INCLUDE__PLATFORM_SESSION__PLATFORM_SESSION_H_
#define _INCLUDE__PLATFORM_SESSION__PLATFORM_SESSION_H_
#include <base/capability.h>
#include <base/rpc.h>
namespace Platform { struct Session; }
struct Platform::Session : Genode::Session
{
enum Device {
IPU,
I2C_2,
I2C_3,
BUTTONS,
PWM,
};
enum Board_revision {
WAND_QUAD = 4,
//SMD = 2, /* Freescale i.MX53 SMD Tablet */
//QSB = 3, /* Freescale i.MX53 low-cost Quickstart board */
UNKNOWN,
};
/**
* \noapi
*/
static const char *service_name() { return "Platform"; }
enum { CAP_QUOTA = 2 };
virtual ~Session() { }
virtual void enable(Device dev) = 0;
virtual void disable(Device dev) = 0;
virtual void clock_rate(Device dev, unsigned long rate) = 0;
virtual Board_revision revision() = 0;
/*********************
** RPC declaration **
*********************/
GENODE_RPC(Rpc_enable, void, enable, Device);
GENODE_RPC(Rpc_disable, void, disable, Device);
GENODE_RPC(Rpc_clock_rate, void, clock_rate, Device, unsigned long);
GENODE_RPC(Rpc_revision, Board_revision, revision);
GENODE_RPC_INTERFACE(Rpc_enable, Rpc_disable, Rpc_clock_rate,
Rpc_revision);
};
#endif /* _INCLUDE__PLATFORM_SESSION__PLATFORM_SESSION_H_ */