| // Copyright 2018 The Fuchsia Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| library ddk.protocol.platform.proxy; |
| |
| using zx; |
| |
| const uint32 PLATFORM_PROXY_MAX_DATA = 4096; |
| |
| /// Header for RPC requests. |
| struct PlatformProxyReq { |
| uint32 txid; |
| uint32 device_id; |
| uint32 proto_id; |
| uint32 op; |
| }; |
| |
| /// Header for RPC responses. |
| struct PlatformProxyRsp { |
| uint32 txid; |
| zx.status status; |
| }; |
| |
| [Layout = "ddk-protocol"] |
| interface PlatformProxy { |
| /// Used by protocol client drivers to register their local protocol implementation |
| /// with the platform proxy driver. |
| RegisterProtocol(uint32 proto_id, vector<voidptr> protocol) -> (zx.status s); |
| /// Used by protocol client drivers to proxy a protocol call to the protocol implementation |
| /// driver in the platform bus driver's devhost. |
| Proxy(vector<voidptr> req, vector<handle> req_handle) -> (zx.status s, vector<voidptr> resp, |
| vector<handle> resp_handle); |
| }; |