xref: /openbmc/linux/include/drm/ttm/ttm_caching.h (revision 03ab8e6297acd1bc0eedaa050e2a1635c576fd11)
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