linux/sound/pci/asihpi/hpicmn.h
<<
>>
Prefs
   1/* SPDX-License-Identifier: GPL-2.0-only */
   2/*
   3
   4    AudioScience HPI driver
   5    Copyright (C) 1997-2014  AudioScience Inc. <support@audioscience.com>
   6
   7
   8*/
   9
  10struct hpi_adapter_obj;
  11
  12/* a function that takes an adapter obj and returns an int */
  13typedef int adapter_int_func(struct hpi_adapter_obj *pao, u32 message);
  14
  15#define HPI_IRQ_NONE            (0)
  16#define HPI_IRQ_MESSAGE         (1)
  17#define HPI_IRQ_MIXER           (2)
  18
  19struct hpi_adapter_obj {
  20        struct hpi_pci pci;     /* PCI info - bus#,dev#,address etc */
  21        u16 type;               /* 0x6644 == ASI6644 etc */
  22        u16 index;
  23
  24        struct hpios_spinlock dsp_lock;
  25
  26        u16 dsp_crashed;
  27        u16 has_control_cache;
  28        void *priv;
  29        adapter_int_func *irq_query_and_clear;
  30        struct hpi_hostbuffer_status *instream_host_buffer_status;
  31        struct hpi_hostbuffer_status *outstream_host_buffer_status;
  32};
  33
  34struct hpi_control_cache {
  35        /** indicates whether the structures are initialized */
  36        u16 init;
  37        u16 adap_idx;
  38        u32 control_count;
  39        u32 cache_size_in_bytes;
  40        /** pointer to allocated memory of lookup pointers. */
  41        struct hpi_control_cache_info **p_info;
  42        /** pointer to DSP's control cache. */
  43        u8 *p_cache;
  44};
  45
  46struct hpi_adapter_obj *hpi_find_adapter(u16 adapter_index);
  47
  48u16 hpi_add_adapter(struct hpi_adapter_obj *pao);
  49
  50void hpi_delete_adapter(struct hpi_adapter_obj *pao);
  51
  52short hpi_check_control_cache(struct hpi_control_cache *pC,
  53        struct hpi_message *phm, struct hpi_response *phr);
  54
  55short hpi_check_control_cache_single(struct hpi_control_cache_single *pC,
  56        struct hpi_message *phm, struct hpi_response *phr);
  57
  58struct hpi_control_cache *hpi_alloc_control_cache(const u32
  59        number_of_controls, const u32 size_in_bytes, u8 *pDSP_control_buffer);
  60
  61void hpi_free_control_cache(struct hpi_control_cache *p_cache);
  62
  63void hpi_cmn_control_cache_sync_to_msg(struct hpi_control_cache *pC,
  64        struct hpi_message *phm, struct hpi_response *phr);
  65
  66void hpi_cmn_control_cache_sync_to_msg_single(struct hpi_control_cache_single
  67        *pC, struct hpi_message *phm, struct hpi_response *phr);
  68
  69u16 hpi_validate_response(struct hpi_message *phm, struct hpi_response *phr);
  70
  71hpi_handler_func HPI_COMMON;
  72