thunderbolt: Add path setup code.
A thunderbolt path is a unidirectional channel between two thunderbolt ports. Two such paths are needed to establish a pci tunnel. This patch introduces struct tb_path as well as a set of tb_path_* methods which are used to activate & deactivate paths. Signed-off-by: Andreas Noever <andreas.noever@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
053596d9e2
commit
520b670216
4 changed files with 312 additions and 1 deletions
|
@ -138,6 +138,40 @@ int tb_wait_for_port(struct tb_port *port, bool wait_if_unplugged)
|
|||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* tb_port_add_nfc_credits() - add/remove non flow controlled credits to port
|
||||
*
|
||||
* Change the number of NFC credits allocated to @port by @credits. To remove
|
||||
* NFC credits pass a negative amount of credits.
|
||||
*
|
||||
* Return: Returns 0 on success or an error code on failure.
|
||||
*/
|
||||
int tb_port_add_nfc_credits(struct tb_port *port, int credits)
|
||||
{
|
||||
if (credits == 0)
|
||||
return 0;
|
||||
tb_port_info(port,
|
||||
"adding %#x NFC credits (%#x -> %#x)",
|
||||
credits,
|
||||
port->config.nfc_credits,
|
||||
port->config.nfc_credits + credits);
|
||||
port->config.nfc_credits += credits;
|
||||
return tb_port_write(port, &port->config.nfc_credits,
|
||||
TB_CFG_PORT, 4, 1);
|
||||
}
|
||||
|
||||
/**
|
||||
* tb_port_clear_counter() - clear a counter in TB_CFG_COUNTER
|
||||
*
|
||||
* Return: Returns 0 on success or an error code on failure.
|
||||
*/
|
||||
int tb_port_clear_counter(struct tb_port *port, int counter)
|
||||
{
|
||||
u32 zero[3] = { 0, 0, 0 };
|
||||
tb_port_info(port, "clearing counter %d\n", counter);
|
||||
return tb_port_write(port, zero, TB_CFG_COUNTERS, 3 * counter, 3);
|
||||
}
|
||||
|
||||
/**
|
||||
* tb_init_port() - initialize a port
|
||||
*
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue