/include/linux/vcm_mm.h
https://github.com/airy09/android_kernel_sony_apq8064 · C Header · 105 lines · 11 code · 10 blank · 84 comment · 0 complexity · e8e4be7640b3fae2459f8354f7faa374 MD5 · raw file
- /* Copyright (c) 2010, The Linux Foundation. All rights reserved.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 and
- * only version 2 as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that 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.
- *
- */
- /* Architecture-specific VCM functions */
- /* Device attributes */
- /*
- * Sharing attributes. Pick only one.
- */
- #define VCM_DEV_ATTR_NON_SH (0x00)
- #define VCM_DEV_ATTR_SH (0x04)
- /*
- * Caching attributes. Pick only one.
- */
- #define VCM_DEV_ATTR_NONCACHED (0x00)
- #define VCM_DEV_ATTR_CACHED_WB_WA (0x01)
- #define VCM_DEV_ATTR_CACHED_WB_NWA (0x02)
- #define VCM_DEV_ATTR_CACHED_WT (0x03)
- /*
- * A "good" default set of attributes: shareable and non-cacheable.
- */
- #define VCM_DEV_DEFAULT_ATTR (VCM_DEV_ATTR_SH | VCM_DEV_ATTR_NONCACHED)
- /**
- * set_arm7_pte_attr() - Set ARMv7 page table attributes
- * pt_base Virtual address of the first-level page table
- * @va Virtual address whose attributes are to be set
- * @len Page size used to map the given virtual address
- * @attr Attributes to set for this mapping.
- *
- * Modify a mapping attribute. The base address of the page table must
- * be a virtual address containing a valid ARMv7 page table. The
- * virtual address must refer to an existing mapping and must be
- * aligned to the length with which it was mapped. The mapping length
- * must similarly be the same as was specified when the mapping was
- * made (one of 4KB, 64KB, 1MB, or 16MB). The attribute must be one of
- * the shareability attributes above ORed with one of the cacheability
- * attributes. Any previous attributes are completely replaced by the
- * most recent call to this function. This function only sets the
- * cacheability and shareability attributes. This is accomplished by
- * modifying the TEX class and the S bit in the PTE. It is an error to
- * call this function without having called vcm_setup_tex_classes at
- * least once.
- *
- * The return value is zero on success and non-zero on failure.
- */
- int set_arm7_pte_attr(unsigned long pt_base, unsigned long va,
- unsigned long len, unsigned int attr);
- /**
- * cpu_set_attr() - Set page table attributes on the CPU's page tables
- * @va Virtual address whose attributes are to be set
- * @len Page size used to map the given virtual address
- * @attr Attributes to set for this mapping.
- *
- * Modify a mapping attribute within the ARM page tables. The va must
- * refer to an existing mapping and must be aligned to the length with
- * which it was mapped. The mapping length must similarly be the same
- * as was specified when the mapping was made (one of 4KB, 64KB, 1MB,
- * or 16MB). The attribute must be one of the shareability attributes
- * above ORed with one of the cacheability attributes. Any previous
- * attributes are completely replaced by the most recent call to this
- * function. This function only sets the cacheability and shareability
- * attributes. This is accomplished by modifying the TEX class and the
- * S bit in the PTE. It is an error to call this function without
- * having called vcm_setup_tex_classes at least once. It is an error
- * to call this function on any system using a memory configuration
- * that is anything OTHER than ARMv7 with TEX remap enabled. Only the
- * HW page tables are modified; the Linux page tables are left
- * untouched.
- *
- * The return value is zero on success and non-zero on failure.
- */
- int cpu_set_attr(unsigned long va, unsigned long len, unsigned int attr);
- /**
- * vcm_setup_tex_classes() - Prepare TEX class table for use
- *
- * Initialize the attribute mapping table by examining the TEX classes
- * used by the CPU and finding the classes that match the device
- * attributes (VCM_DEV_xx) defined above. This function is only
- * relevant if TEX remap is enabled. The results will be unpredictable
- * and irrelevant if TEX remap is not in use. It is an error to call
- * this function in any system using a memory configuration of
- * anything OTHER than ARMv7 with TEX remap enabled.
- *
- * The return value is zero on success or non-zero on failure. In the
- * present version, a failure will result in a panic.
- */
- int vcm_setup_tex_classes(void);