1 /* SPDX-License-Identifier: GPL-2.0-only */ 2 /* 3 * Tegra host1x Channel 4 * 5 * Copyright (c) 2010-2013, NVIDIA Corporation. 6 */ 7 8 #ifndef __HOST1X_CHANNEL_H 9 #define __HOST1X_CHANNEL_H 10 11 #include <linux/io.h> 12 #include <linux/kref.h> 13 #include <linux/mutex.h> 14 15 #include "cdma.h" 16 17 struct host1x; 18 struct host1x_channel; 19 20 struct host1x_channel_list { 21 struct host1x_channel *channels; 22 23 struct mutex lock; 24 unsigned long *allocated_channels; 25 }; 26 27 struct host1x_channel { 28 struct kref refcount; 29 unsigned int id; 30 struct mutex submitlock; 31 void __iomem *regs; 32 struct host1x_client *client; 33 struct device *dev; 34 struct host1x_cdma cdma; 35 }; 36 37 /* channel list operations */ 38 int host1x_channel_list_init(struct host1x_channel_list *chlist, 39 unsigned int num_channels); 40 void host1x_channel_list_free(struct host1x_channel_list *chlist); 41 struct host1x_channel *host1x_channel_get_index(struct host1x *host, 42 unsigned int index); 43 void host1x_channel_stop_all(struct host1x *host); 44 45 #endif 46