Initial Contribution
msm-2.6.38: tag AU_LINUX_ANDROID_GINGERBREAD.02.03.04.00.142 Signed-off-by: Bryan Huntsman <bryanh@codeaurora.org>
This commit is contained in:
105
include/linux/vcm_mm.h
Normal file
105
include/linux/vcm_mm.h
Normal file
@@ -0,0 +1,105 @@
|
||||
/* Copyright (c) 2010, Code Aurora Forum. 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);
|
||||
Reference in New Issue
Block a user