11b4ea4c5SChristian König /* 21b4ea4c5SChristian König * Copyright 2020 Advanced Micro Devices, Inc. 31b4ea4c5SChristian König * 41b4ea4c5SChristian König * Permission is hereby granted, free of charge, to any person obtaining a 51b4ea4c5SChristian König * copy of this software and associated documentation files (the "Software"), 61b4ea4c5SChristian König * to deal in the Software without restriction, including without limitation 71b4ea4c5SChristian König * the rights to use, copy, modify, merge, publish, distribute, sublicense, 81b4ea4c5SChristian König * and/or sell copies of the Software, and to permit persons to whom the 91b4ea4c5SChristian König * Software is furnished to do so, subject to the following conditions: 101b4ea4c5SChristian König * 111b4ea4c5SChristian König * The above copyright notice and this permission notice shall be included in 121b4ea4c5SChristian König * all copies or substantial portions of the Software. 131b4ea4c5SChristian König * 141b4ea4c5SChristian König * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 151b4ea4c5SChristian König * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 161b4ea4c5SChristian König * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 171b4ea4c5SChristian König * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR 181b4ea4c5SChristian König * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, 191b4ea4c5SChristian König * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 201b4ea4c5SChristian König * OTHER DEALINGS IN THE SOFTWARE. 211b4ea4c5SChristian König * 221b4ea4c5SChristian König * Authors: Christian König 231b4ea4c5SChristian König */ 241b4ea4c5SChristian König 251b4ea4c5SChristian König #ifndef _TTM_CACHING_H_ 261b4ea4c5SChristian König #define _TTM_CACHING_H_ 271b4ea4c5SChristian König 28d099fc8fSChristian König #define TTM_NUM_CACHING_TYPES 3 29d099fc8fSChristian König 30*be77a2f4SChristian König /** 31*be77a2f4SChristian König * enum ttm_caching - CPU caching and BUS snooping behavior. 32*be77a2f4SChristian König */ 331b4ea4c5SChristian König enum ttm_caching { 34*be77a2f4SChristian König /** 35*be77a2f4SChristian König * @ttm_uncached: Most defensive option for device mappings, 36*be77a2f4SChristian König * don't even allow write combining. 37*be77a2f4SChristian König */ 381b4ea4c5SChristian König ttm_uncached, 39*be77a2f4SChristian König 40*be77a2f4SChristian König /** 41*be77a2f4SChristian König * @ttm_write_combined: Don't cache read accesses, but allow at least 42*be77a2f4SChristian König * writes to be combined. 43*be77a2f4SChristian König */ 441b4ea4c5SChristian König ttm_write_combined, 45*be77a2f4SChristian König 46*be77a2f4SChristian König /** 47*be77a2f4SChristian König * @ttm_cached: Fully cached like normal system memory, requires that 48*be77a2f4SChristian König * devices snoop the CPU cache on accesses. 49*be77a2f4SChristian König */ 501b4ea4c5SChristian König ttm_cached 511b4ea4c5SChristian König }; 521b4ea4c5SChristian König 533bf3710eSThomas Hellström pgprot_t ttm_prot_from_caching(enum ttm_caching caching, pgprot_t tmp); 543bf3710eSThomas Hellström 551b4ea4c5SChristian König #endif 56