38 lines
1.4 KiB
C
38 lines
1.4 KiB
C
|
/*
|
||
|
* Copyright (C) 2013 Apple Inc. All rights reserved.
|
||
|
*
|
||
|
* This document is the property of Apple Inc.
|
||
|
* It is considered confidential and proprietary.
|
||
|
*
|
||
|
* This document may not be reproduced or transmitted in any form,
|
||
|
* in whole or in part, without the express written permission of
|
||
|
* Apple Inc.
|
||
|
*/
|
||
|
#ifndef TBT_CONTROL_PORT_H
|
||
|
#define TBT_CONTROL_PORT_H
|
||
|
|
||
|
#include <stdint.h>
|
||
|
#include <drivers/thunderbolt/nhi.h>
|
||
|
#include "uuid.h"
|
||
|
|
||
|
typedef struct tbt_cp tbt_cp_t;
|
||
|
typedef void (*tbt_xd_callback_t)(tbt_cp_t *, const uint8_t *packet, size_t len, void *priv);
|
||
|
|
||
|
tbt_cp_t *tbt_cp_create(nhi_t *nhi);
|
||
|
void tbt_cp_quiesce_and_free(tbt_cp_t *cp);
|
||
|
void *tbt_cp_register_xd_service(tbt_cp_t *cp, tbt_xd_callback_t req_cb, tbt_xd_callback_t resp_cb, void *priv);
|
||
|
void tbt_cp_unregister_xd_service(tbt_cp_t *cp, void *handle);
|
||
|
|
||
|
bool tbt_cp_read(tbt_cp_t *cp, uint64_t topology_id, uint8_t space, uint8_t port, uint16_t index, uint32_t *buffer, uint16_t quadlets);
|
||
|
bool tbt_cp_write(tbt_cp_t *cp, uint64_t topology_id, uint8_t space, uint8_t port, uint16_t index, const uint32_t *buffer, uint16_t quadlets);
|
||
|
|
||
|
bool tbt_cp_packet_available(tbt_cp_t *cp);
|
||
|
void tbt_cp_process_packet(tbt_cp_t *cp);
|
||
|
uint8_t tbt_cp_next_pdf_seq(tbt_cp_t *cp, uint8_t pdf);
|
||
|
bool tbt_cp_send(tbt_cp_t *cp, uint8_t pdf, uint8_t *packet, size_t len);
|
||
|
|
||
|
uint64_t tbt_cp_packet_get_route_string(const uint8_t *packet);
|
||
|
void tbt_cp_packet_set_route_string(uint8_t *packet, uint64_t route_string);
|
||
|
|
||
|
#endif
|