![]() |
|
|||
0001 /* 0002 * Copyright (c) 2013-2015, Mellanox Technologies. All rights reserved. 0003 * 0004 * This software is available to you under a choice of one of two 0005 * licenses. You may choose to be licensed under the terms of the GNU 0006 * General Public License (GPL) Version 2, available from the file 0007 * COPYING in the main directory of this source tree, or the 0008 * OpenIB.org BSD license below: 0009 * 0010 * Redistribution and use in source and binary forms, with or 0011 * without modification, are permitted provided that the following 0012 * conditions are met: 0013 * 0014 * - Redistributions of source code must retain the above 0015 * copyright notice, this list of conditions and the following 0016 * disclaimer. 0017 * 0018 * - Redistributions in binary form must reproduce the above 0019 * copyright notice, this list of conditions and the following 0020 * disclaimer in the documentation and/or other materials 0021 * provided with the distribution. 0022 * 0023 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 0024 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 0025 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 0026 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS 0027 * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN 0028 * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 0029 * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 0030 * SOFTWARE. 0031 */ 0032 0033 #ifndef MLX5_DOORBELL_H 0034 #define MLX5_DOORBELL_H 0035 0036 #define MLX5_BF_OFFSET 0x800 0037 #define MLX5_CQ_DOORBELL 0x20 0038 0039 /* Assume that we can just write a 64-bit doorbell atomically. s390 0040 * actually doesn't have writeq() but S/390 systems don't even have 0041 * PCI so we won't worry about it. 0042 * 0043 * Note that the write is not atomic on 32-bit systems! In contrast to 64-bit 0044 * ones, it requires proper locking. mlx5_write64 doesn't do any locking, so use 0045 * it at your own discretion, protected by some kind of lock on 32 bits. 0046 * 0047 * TODO: use write{q,l}_relaxed() 0048 */ 0049 0050 static inline void mlx5_write64(__be32 val[2], void __iomem *dest) 0051 { 0052 #if BITS_PER_LONG == 64 0053 __raw_writeq(*(u64 *)val, dest); 0054 #else 0055 __raw_writel((__force u32) val[0], dest); 0056 __raw_writel((__force u32) val[1], dest + 4); 0057 #endif 0058 } 0059 0060 #endif /* MLX5_DOORBELL_H */
[ Source navigation ] | [ Diff markup ] | [ Identifier search ] | [ general search ] |
This page was automatically generated by the 2.1.0 LXR engine. The LXR team |
![]() ![]() |