linux/drivers/staging/media/atomisp/pci/atomisp2/css2400/hive_isp_css_common/host/event_fifo_private.h
<<
>>
Prefs
   1/*
   2 * Support for Intel Camera Imaging ISP subsystem.
   3 * Copyright (c) 2015, Intel Corporation.
   4 *
   5 * This program is free software; you can redistribute it and/or modify it
   6 * under the terms and conditions of the GNU General Public License,
   7 * version 2, as published by the Free Software Foundation.
   8 *
   9 * This program is distributed in the hope it will be useful, but WITHOUT
  10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  11 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
  12 * more details.
  13 */
  14
  15#ifndef __EVENT_FIFO_PRIVATE_H
  16#define __EVENT_FIFO_PRIVATE_H
  17
  18#include "event_fifo_public.h"
  19
  20#include "device_access.h"
  21
  22#include "assert_support.h"
  23
  24#include <hrt/bits.h>                   /* _hrt_get_bits() */
  25
  26STORAGE_CLASS_EVENT_C void event_wait_for(const event_ID_t ID)
  27{
  28        assert(ID < N_EVENT_ID);
  29        assert(event_source_addr[ID] != ((hrt_address)-1));
  30        (void)ia_css_device_load_uint32(event_source_addr[ID]);
  31return;
  32}
  33
  34STORAGE_CLASS_EVENT_C void cnd_event_wait_for(const event_ID_t ID,
  35                                                const bool cnd)
  36{
  37        if (cnd) {
  38                event_wait_for(ID);
  39        }
  40}
  41
  42STORAGE_CLASS_EVENT_C hrt_data event_receive_token(const event_ID_t ID)
  43{
  44        assert(ID < N_EVENT_ID);
  45        assert(event_source_addr[ID] != ((hrt_address)-1));
  46        return ia_css_device_load_uint32(event_source_addr[ID]);
  47}
  48
  49STORAGE_CLASS_EVENT_C void event_send_token(const event_ID_t ID,
  50                                            const hrt_data token)
  51{
  52        assert(ID < N_EVENT_ID);
  53        assert(event_sink_addr[ID] != ((hrt_address)-1));
  54        ia_css_device_store_uint32(event_sink_addr[ID], token);
  55}
  56
  57STORAGE_CLASS_EVENT_C bool is_event_pending(const event_ID_t ID)
  58{
  59        hrt_data        value;
  60        assert(ID < N_EVENT_ID);
  61        assert(event_source_query_addr[ID] != ((hrt_address)-1));
  62        value = ia_css_device_load_uint32(event_source_query_addr[ID]);
  63        return !_hrt_get_bit(value, EVENT_QUERY_BIT);
  64}
  65
  66STORAGE_CLASS_EVENT_C bool can_event_send_token(const event_ID_t ID)
  67{
  68        hrt_data        value;
  69        assert(ID < N_EVENT_ID);
  70        assert(event_sink_query_addr[ID] != ((hrt_address)-1));
  71        value = ia_css_device_load_uint32(event_sink_query_addr[ID]);
  72        return !_hrt_get_bit(value, EVENT_QUERY_BIT);
  73}
  74
  75#endif /* __EVENT_FIFO_PRIVATE_H */
  76