brintos

brintos / linux-shallow public Read only

0
0
Text · 4.0 KiB · 968ab1e Raw
132 lines · c
1/* SPDX-License-Identifier: GPL-2.0 */2 3/* Copyright (c) 2015-2018, The Linux Foundation. All rights reserved.4 * Copyright (C) 2018-2024 Linaro Ltd.5 */6#ifndef _GSI_PRIVATE_H_7#define _GSI_PRIVATE_H_8 9/* === Only "gsi.c" and "gsi_trans.c" should include this file === */10 11#include <linux/types.h>12 13struct gsi;14struct gsi_channel;15struct gsi_ring;16struct gsi_trans;17 18#define GSI_RING_ELEMENT_SIZE	16	/* bytes; must be a power of 2 */19 20/**21 * gsi_trans_move_complete() - Mark a GSI transaction completed22 * @trans:	Transaction whose state is to be updated23 */24void gsi_trans_move_complete(struct gsi_trans *trans);25 26/**27 * gsi_trans_move_polled() - Mark a transaction polled28 * @trans:	Transaction whose state is to be updated29 */30void gsi_trans_move_polled(struct gsi_trans *trans);31 32/**33 * gsi_trans_complete() - Complete a GSI transaction34 * @trans:	Transaction to complete35 *36 * Marks a transaction complete (including freeing it).37 */38void gsi_trans_complete(struct gsi_trans *trans);39 40/**41 * gsi_channel_trans_mapped() - Return a transaction mapped to a TRE index42 * @channel:	Channel associated with the transaction43 * @index:	Index of the TRE having a transaction44 *45 * Return:	The GSI transaction pointer associated with the TRE index46 */47struct gsi_trans *gsi_channel_trans_mapped(struct gsi_channel *channel,48					   u32 index);49 50/**51 * gsi_channel_trans_complete() - Return a channel's next completed transaction52 * @channel:	Channel whose next transaction is to be returned53 *54 * Return:	The next completed transaction, or NULL if nothing new55 */56struct gsi_trans *gsi_channel_trans_complete(struct gsi_channel *channel);57 58/**59 * gsi_channel_trans_cancel_pending() - Cancel pending transactions60 * @channel:	Channel whose pending transactions should be cancelled61 *62 * Cancel all pending transactions on a channel.  These are transactions63 * that have been committed but not yet completed.  This is required when64 * the channel gets reset.  At that time all pending transactions will be65 * marked as cancelled.66 *67 * NOTE:  Transactions already complete at the time of this call are68 *	  unaffected.69 */70void gsi_channel_trans_cancel_pending(struct gsi_channel *channel);71 72/**73 * gsi_channel_trans_init() - Initialize a channel's GSI transaction info74 * @gsi:	GSI pointer75 * @channel_id:	Channel number76 *77 * Return:	0 if successful, or -ENOMEM on allocation failure78 *79 * Creates and sets up information for managing transactions on a channel80 */81int gsi_channel_trans_init(struct gsi *gsi, u32 channel_id);82 83/**84 * gsi_channel_trans_exit() - Inverse of gsi_channel_trans_init()85 * @channel:	Channel whose transaction information is to be cleaned up86 */87void gsi_channel_trans_exit(struct gsi_channel *channel);88 89/**90 * gsi_channel_doorbell() - Ring a channel's doorbell91 * @channel:	Channel whose doorbell should be rung92 *93 * Rings a channel's doorbell to inform the GSI hardware that new94 * transactions (TREs, really) are available for it to process.95 */96void gsi_channel_doorbell(struct gsi_channel *channel);97 98/* gsi_channel_update() - Update knowledge of channel hardware state99 * @channel:	Channel to be updated100 *101 * Consult hardware, change the state of any newly-completed transactions102 * on a channel.103 */104void gsi_channel_update(struct gsi_channel *channel);105 106/**107 * gsi_ring_virt() - Return virtual address for a ring entry108 * @ring:	Ring whose address is to be translated109 * @index:	Index (slot number) of entry110 */111void *gsi_ring_virt(struct gsi_ring *ring, u32 index);112 113/**114 * gsi_trans_tx_committed() - Record bytes committed for transmit115 * @trans:	TX endpoint transaction being committed116 *117 * Report that a TX transaction has been committed.  It updates some118 * statistics used to manage transmit rates.119 */120void gsi_trans_tx_committed(struct gsi_trans *trans);121 122/**123 * gsi_trans_tx_queued() - Report a queued TX channel transaction124 * @trans:	Transaction being passed to hardware125 *126 * Report to the network stack that a TX transaction is being supplied127 * to the hardware.128 */129void gsi_trans_tx_queued(struct gsi_trans *trans);130 131#endif /* _GSI_PRIVATE_H_ */132