| // SPDX-License-Identifier: GPL-2.0 |
| /* |
| * Support for Intel Camera Imaging ISP subsystem. |
| * Copyright (c) 2010-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. |
| */ |
| |
| #include <type_support.h> /*uint32_t */ |
| #include "gp_timer.h" /*system_local.h, |
| gp_timer_public.h*/ |
| |
| #ifndef __INLINE_GP_TIMER__ |
| #include "gp_timer_private.h" /*device_access.h*/ |
| #endif /* __INLINE_GP_TIMER__ */ |
| #include "system_local.h" |
| |
| /* FIXME: not sure if reg_load(), reg_store() should be API. |
| */ |
| static uint32_t |
| gp_timer_reg_load(uint32_t reg); |
| |
| static void |
| gp_timer_reg_store(u32 reg, uint32_t value); |
| |
| static uint32_t |
| gp_timer_reg_load(uint32_t reg) |
| { |
| return ia_css_device_load_uint32( |
| GP_TIMER_BASE + |
| (reg * sizeof(uint32_t))); |
| } |
| |
| static void |
| gp_timer_reg_store(u32 reg, uint32_t value) |
| { |
| ia_css_device_store_uint32((GP_TIMER_BASE + |
| (reg * sizeof(uint32_t))), |
| value); |
| } |
| |
| void gp_timer_init(gp_timer_ID_t ID) |
| { |
| /* set_overall_enable*/ |
| gp_timer_reg_store(_REG_GP_TIMER_OVERALL_ENABLE, 1); |
| |
| /*set enable*/ |
| gp_timer_reg_store(_REG_GP_TIMER_ENABLE_ID(ID), 1); |
| |
| /* set signal select */ |
| gp_timer_reg_store(_REG_GP_TIMER_SIGNAL_SELECT_ID(ID), GP_TIMER_SIGNAL_SELECT); |
| |
| /*set count type */ |
| gp_timer_reg_store(_REG_GP_TIMER_COUNT_TYPE_ID(ID), GP_TIMER_COUNT_TYPE_LOW); |
| |
| /*reset gp timer */ |
| gp_timer_reg_store(_REG_GP_TIMER_RESET_REG, 0xFF); |
| } |
| |
| uint32_t |
| gp_timer_read(gp_timer_ID_t ID) |
| { |
| return gp_timer_reg_load(_REG_GP_TIMER_VALUE_ID(ID)); |
| } |