1219820Sjeff/* 2219820Sjeff * Copyright (c) 2006-2007 Mellanox Technologies. All rights reserved. 3219820Sjeff * 4219820Sjeff * This software is available to you under a choice of one of two 5219820Sjeff * licenses. You may choose to be licensed under the terms of the GNU 6219820Sjeff * General Public License (GPL) Version 2, available from the file 7219820Sjeff * COPYING in the main directory of this source tree, or the 8219820Sjeff * OpenIB.org BSD license below: 9219820Sjeff * 10219820Sjeff * Redistribution and use in source and binary forms, with or 11219820Sjeff * without modification, are permitted provided that the following 12219820Sjeff * conditions are met: 13219820Sjeff * 14219820Sjeff * - Redistributions of source code must retain the above 15219820Sjeff * copyright notice, this list of conditions and the following 16219820Sjeff * disclaimer. 17219820Sjeff * 18219820Sjeff * - Redistributions in binary form must reproduce the above 19219820Sjeff * copyright notice, this list of conditions and the following 20219820Sjeff * disclaimer in the documentation and/or other materials 21219820Sjeff * provided with the distribution. 22219820Sjeff * 23219820Sjeff * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 24219820Sjeff * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 25219820Sjeff * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 26219820Sjeff * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS 27219820Sjeff * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN 28219820Sjeff * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 29219820Sjeff * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 30219820Sjeff * SOFTWARE. 31219820Sjeff */ 32219820Sjeff 33219820Sjeff#include <linux/pci.h> 34219820Sjeff#include "wc.h" 35219820Sjeff 36219820Sjeff#if defined(__i386__) || defined(__x86_64__) 37219820Sjeff 38219820Sjeffpgprot_t pgprot_wc(pgprot_t _prot) 39219820Sjeff{ 40219820Sjeff return pgprot_writecombine(_prot); 41219820Sjeff} 42219820Sjeff 43219820Sjeffint mlx4_wc_enabled(void) 44219820Sjeff{ 45219820Sjeff return 1; 46219820Sjeff} 47219820Sjeff 48219820Sjeff#elif defined(CONFIG_PPC64) 49219820Sjeff 50219820Sjeffpgprot_t pgprot_wc(pgprot_t _prot) 51219820Sjeff{ 52219820Sjeff return __pgprot((pgprot_val(_prot) | _PAGE_NO_CACHE) & 53219820Sjeff ~(pgprot_t)_PAGE_GUARDED); 54219820Sjeff} 55219820Sjeff 56219820Sjeffint mlx4_wc_enabled(void) 57219820Sjeff{ 58219820Sjeff return 1; 59219820Sjeff} 60219820Sjeff 61219820Sjeff#else /* !(defined(__i386__) || defined(__x86_64__)) */ 62219820Sjeff 63219820Sjeffpgprot_t pgprot_wc(pgprot_t _prot) 64219820Sjeff{ 65219820Sjeff return pgprot_noncached(_prot); 66219820Sjeff} 67219820Sjeff 68219820Sjeffint mlx4_wc_enabled(void) 69219820Sjeff{ 70219820Sjeff return 0; 71219820Sjeff} 72219820Sjeff 73219820Sjeff#endif 74219820Sjeff 75