/* SPDX-License-Identifier: GPL-2.0 */ /* * Support for Intel Camera Imaging ISP subsystem. * Copyright (c) 2015, Intel Corporation. * * This program is free software; you can redistribute it and/or modify it * under the terms and conditions of the GNU General Public License, * version 2, as published by the Free Software Foundation. * * This program is distributed in the hope 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. */ #ifndef __MMU_PUBLIC_H_INCLUDED__ #define __MMU_PUBLIC_H_INCLUDED__ #include "system_local.h" #include "device_access.h" #include "assert_support.h" /*! Set the page table base index of MMU[ID] \param ID[in] MMU identifier \param base_index[in] page table base index \return none, MMU[ID].page_table_base_index = base_index */ void mmu_set_page_table_base_index( const mmu_ID_t ID, const hrt_data base_index); /*! Get the page table base index of MMU[ID] \param ID[in] MMU identifier \param base_index[in] page table base index \return MMU[ID].page_table_base_index */ hrt_data mmu_get_page_table_base_index( const mmu_ID_t ID); /*! Invalidate the page table cache of MMU[ID] \param ID[in] MMU identifier \return none */ void mmu_invalidate_cache( const mmu_ID_t ID); /*! Invalidate the page table cache of all MMUs \return none */ void mmu_invalidate_cache_all(void); /*! Write to a control register of MMU[ID] \param ID[in] MMU identifier \param reg[in] register index \param value[in] The data to be written \return none, MMU[ID].ctrl[reg] = value */ static inline void mmu_reg_store( const mmu_ID_t ID, const unsigned int reg, const hrt_data value) { assert(ID < N_MMU_ID); assert(MMU_BASE[ID] != (hrt_address) - 1); ia_css_device_store_uint32(MMU_BASE[ID] + reg * sizeof(hrt_data), value); return; } /*! Read from a control register of MMU[ID] \param ID[in] MMU identifier \param reg[in] register index \param value[in] The data to be written \return MMU[ID].ctrl[reg] */ static inline hrt_data mmu_reg_load( const mmu_ID_t ID, const unsigned int reg) { assert(ID < N_MMU_ID); assert(MMU_BASE[ID] != (hrt_address) - 1); return ia_css_device_load_uint32(MMU_BASE[ID] + reg * sizeof(hrt_data)); } #endif /* __MMU_PUBLIC_H_INCLUDED__ */