root/sound/pci/asihpi/hpicmn.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


   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 
  10 struct hpi_adapter_obj;
  11 
  12 /* a function that takes an adapter obj and returns an int */
  13 typedef 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 
  19 struct 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 
  34 struct 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 
  46 struct hpi_adapter_obj *hpi_find_adapter(u16 adapter_index);
  47 
  48 u16 hpi_add_adapter(struct hpi_adapter_obj *pao);
  49 
  50 void hpi_delete_adapter(struct hpi_adapter_obj *pao);
  51 
  52 short hpi_check_control_cache(struct hpi_control_cache *pC,
  53         struct hpi_message *phm, struct hpi_response *phr);
  54 
  55 short hpi_check_control_cache_single(struct hpi_control_cache_single *pC,
  56         struct hpi_message *phm, struct hpi_response *phr);
  57 
  58 struct hpi_control_cache *hpi_alloc_control_cache(const u32
  59         number_of_controls, const u32 size_in_bytes, u8 *pDSP_control_buffer);
  60 
  61 void hpi_free_control_cache(struct hpi_control_cache *p_cache);
  62 
  63 void hpi_cmn_control_cache_sync_to_msg(struct hpi_control_cache *pC,
  64         struct hpi_message *phm, struct hpi_response *phr);
  65 
  66 void hpi_cmn_control_cache_sync_to_msg_single(struct hpi_control_cache_single
  67         *pC, struct hpi_message *phm, struct hpi_response *phr);
  68 
  69 u16 hpi_validate_response(struct hpi_message *phm, struct hpi_response *phr);
  70 
  71 hpi_handler_func HPI_COMMON;

/* [<][>][^][v][top][bottom][index][help] */