/* * Copyright (c) 2016, NVIDIA CORPORATION. All rights reserved. * * This program is free software; you can redistribute it and/or modify it * under the terms and conditions of the GNU General Public License, * version 2, as published by the Free Software Foundation. * * This program is distributed in the hope it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for * more details. */ #ifndef __SOC_TEGRA_BPMP_H #define __SOC_TEGRA_BPMP_H #include #include #include #include #include struct tegra_bpmp_clk; struct tegra_bpmp_soc { struct { struct { unsigned int offset; unsigned int count; unsigned int timeout; } cpu_tx, thread, cpu_rx; } channels; unsigned int num_resets; }; struct tegra_bpmp_mb_data { u32 code; u32 flags; u8 data[MSG_DATA_MIN_SZ]; } __packed; struct tegra_bpmp_channel { struct tegra_bpmp *bpmp; struct tegra_bpmp_mb_data *ib; struct tegra_bpmp_mb_data *ob; struct completion completion; struct tegra_ivc *ivc; }; typedef void (*tegra_bpmp_mrq_handler_t)(unsigned int mrq, struct tegra_bpmp_channel *channel, void *data); struct tegra_bpmp_mrq { struct list_head list; unsigned int mrq; tegra_bpmp_mrq_handler_t handler; void *data; }; struct tegra_bpmp { const struct tegra_bpmp_soc *soc; struct device *dev; struct { struct gen_pool *pool; dma_addr_t phys; void *virt; } tx, rx; struct { struct mbox_client client; struct mbox_chan *channel; } mbox; struct tegra_bpmp_channel *channels; unsigned int num_channels; struct { unsigned long *allocated; unsigned long *busy; unsigned int count; struct semaphore lock; } threaded; struct list_head mrqs; spinlock_t lock; struct tegra_bpmp_clk **clocks; unsigned int num_clocks; struct reset_controller_dev rstc; }; struct tegra_bpmp *tegra_bpmp_get(struct device *dev); void tegra_bpmp_put(struct tegra_bpmp *bpmp); struct tegra_bpmp_message { unsigned int mrq; struct { const void *data; size_t size; } tx; struct { void *data; size_t size; } rx; }; int tegra_bpmp_transfer_atomic(struct tegra_bpmp *bpmp, struct tegra_bpmp_message *msg); int tegra_bpmp_transfer(struct tegra_bpmp *bpmp, struct tegra_bpmp_message *msg); int tegra_bpmp_request_mrq(struct tegra_bpmp *bpmp, unsigned int mrq, tegra_bpmp_mrq_handler_t handler, void *data); void tegra_bpmp_free_mrq(struct tegra_bpmp *bpmp, unsigned int mrq, void *data); #if IS_ENABLED(CONFIG_CLK_TEGRA_BPMP) int tegra_bpmp_init_clocks(struct tegra_bpmp *bpmp); #else static inline int tegra_bpmp_init_clocks(struct tegra_bpmp *bpmp) { return 0; } #endif #if IS_ENABLED(CONFIG_RESET_TEGRA_BPMP) int tegra_bpmp_init_resets(struct tegra_bpmp *bpmp); #else static inline int tegra_bpmp_init_resets(struct tegra_bpmp *bpmp) { return 0; } #endif #endif /* __SOC_TEGRA_BPMP_H */ next.git/commit/include/uapi/mtd?id=2eabb8b8d68bc9c7779ba8b04bec8d4f8baed0bc'>mtd/mtd-abi.h
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2017-01-16 09:34:37 -0800
committerLinus Torvalds <torvalds@linux-foundation.org>2017-01-16 09:34:37 -0800
commit2eabb8b8d68bc9c7779ba8b04bec8d4f8baed0bc (patch)
tree4d8ea8e6ca52f1938269937834641205d8d888f0 /include/uapi/mtd/mtd-abi.h
parent49def1853334396f948dcb4cedb9347abb318df5 (diff)
parentce1ca7d2d140a1f4aaffd297ac487f246963dd2f (diff)
Merge tag 'nfsd-4.10-1' of git://linux-nfs.org/~bfields/linux
Pull nfsd fixes from Bruce Fields: "Miscellaneous nfsd bugfixes, one for a 4.10 regression, three for older bugs" * tag 'nfsd-4.10-1' of git://linux-nfs.org/~bfields/linux: svcrdma: avoid duplicate dma unmapping during error recovery sunrpc: don't call sleeping functions from the notifier block callbacks svcrpc: don't leak contexts on PROC_DESTROY nfsd: fix supported attributes for acl & labels
Diffstat (limited to 'include/uapi/mtd/mtd-abi.h')