Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/C/Linux/include/sound/   (Open Source Betriebssystem Version 6.17.9©)  Datei vom 24.10.2025 mit Größe 4 kB image not shown  

Quelle  intel-nhlt.h   Sprache: C

 
/* SPDX-License-Identifier: GPL-2.0-only */
/*
 *  intel-nhlt.h - Intel HDA Platform NHLT header
 *
 *  Copyright (c) 2015-2019 Intel Corporation
 */


#ifndef __INTEL_NHLT_H__
#define __INTEL_NHLT_H__

#include <linux/acpi.h>

enum nhlt_link_type {
 NHLT_LINK_HDA = 0,
 NHLT_LINK_DSP = 1,
 NHLT_LINK_DMIC = 2,
 NHLT_LINK_SSP = 3,
 NHLT_LINK_INVALID
};

enum nhlt_device_type {
 NHLT_DEVICE_BT = 0,
 NHLT_DEVICE_DMIC = 1,
 NHLT_DEVICE_I2S = 4,
 NHLT_DEVICE_INVALID
};

struct wav_fmt {
 u16 fmt_tag;
 u16 channels;
 u32 samples_per_sec;
 u32 avg_bytes_per_sec;
 u16 block_align;
 u16 bits_per_sample;
 u16 cb_size;
} __packed;

struct wav_fmt_ext {
 struct wav_fmt fmt;
 union samples {
  u16 valid_bits_per_sample;
  u16 samples_per_block;
  u16 reserved;
 } sample;
 u32 channel_mask;
 u8 sub_fmt[16];
} __packed;

struct nhlt_specific_cfg {
 u32 size;
 u8 caps[];
} __packed;

struct nhlt_fmt_cfg {
 struct wav_fmt_ext fmt_ext;
 struct nhlt_specific_cfg config;
} __packed;

struct nhlt_fmt {
 u8 fmt_count;
 struct nhlt_fmt_cfg fmt_config[];
} __packed;

struct nhlt_endpoint {
 u32  length;
 u8   linktype;
 u8   instance_id;
 u16  vendor_id;
 u16  device_id;
 u16  revision_id;
 u32  subsystem_id;
 u8   device_type;
 u8   direction;
 u8   virtual_bus_id;
 struct nhlt_specific_cfg config;
} __packed;

struct nhlt_acpi_table {
 struct acpi_table_header header;
 u8 endpoint_count;
 struct nhlt_endpoint desc[];
} __packed;

struct nhlt_resource_desc  {
 u32 extra;
 u16 flags;
 u64 addr_spc_gra;
 u64 min_addr;
 u64 max_addr;
 u64 addr_trans_offset;
 u64 length;
} __packed;

#define MIC_ARRAY_2CH 2
#define MIC_ARRAY_4CH 4

struct nhlt_device_specific_config {
 u8 virtual_slot;
 u8 config_type;
} __packed;

struct nhlt_dmic_array_config {
 struct nhlt_device_specific_config device_config;
 u8 array_type;
} __packed;

struct nhlt_vendor_dmic_array_config {
 struct nhlt_dmic_array_config dmic_config;
 u8 nb_mics;
 /* TODO add vendor mic config */
} __packed;

enum {
 NHLT_CONFIG_TYPE_GENERIC = 0,
 NHLT_CONFIG_TYPE_MIC_ARRAY = 1
};

enum {
 NHLT_MIC_ARRAY_2CH_SMALL = 0xa,
 NHLT_MIC_ARRAY_2CH_BIG = 0xb,
 NHLT_MIC_ARRAY_4CH_1ST_GEOM = 0xc,
 NHLT_MIC_ARRAY_4CH_L_SHAPED = 0xd,
 NHLT_MIC_ARRAY_4CH_2ND_GEOM = 0xe,
 NHLT_MIC_ARRAY_VENDOR_DEFINED = 0xf,
};

#if IS_ENABLED(CONFIG_ACPI) && IS_ENABLED(CONFIG_SND_INTEL_NHLT)

struct nhlt_acpi_table *intel_nhlt_init(struct device *dev);

void intel_nhlt_free(struct nhlt_acpi_table *addr);

int intel_nhlt_get_dmic_geo(struct device *dev, struct nhlt_acpi_table *nhlt);

bool intel_nhlt_has_endpoint_type(struct nhlt_acpi_table *nhlt, u8 link_type);

int intel_nhlt_ssp_endpoint_mask(struct nhlt_acpi_table *nhlt, u8 device_type);

int intel_nhlt_ssp_mclk_mask(struct nhlt_acpi_table *nhlt, int ssp_num);

struct nhlt_specific_cfg *
intel_nhlt_get_endpoint_blob(struct device *dev, struct nhlt_acpi_table *nhlt,
        u32 bus_id, u8 link_type, u8 vbps, u8 bps,
        u8 num_ch, u32 rate, u8 dir, u8 dev_type);

int intel_nhlt_ssp_device_type(struct device *dev, struct nhlt_acpi_table *nhlt,
          u8 virtual_bus_id);

#else

static inline struct nhlt_acpi_table *intel_nhlt_init(struct device *dev)
{
 return NULL;
}

static inline void intel_nhlt_free(struct nhlt_acpi_table *addr)
{
}

static inline int intel_nhlt_get_dmic_geo(struct device *dev,
       struct nhlt_acpi_table *nhlt)
{
 return 0;
}

static inline bool intel_nhlt_has_endpoint_type(struct nhlt_acpi_table *nhlt,
      u8 link_type)
{
 return false;
}

static inline int intel_nhlt_ssp_endpoint_mask(struct nhlt_acpi_table *nhlt, u8 device_type)
{
 return 0;
}

static inline int intel_nhlt_ssp_mclk_mask(struct nhlt_acpi_table *nhlt, int ssp_num)
{
 return 0;
}

static inline struct nhlt_specific_cfg *
intel_nhlt_get_endpoint_blob(struct device *dev, struct nhlt_acpi_table *nhlt,
        u32 bus_id, u8 link_type, u8 vbps, u8 bps,
        u8 num_ch, u32 rate, u8 dir, u8 dev_type)
{
 return NULL;
}

static inline int intel_nhlt_ssp_device_type(struct device *dev,
          struct nhlt_acpi_table *nhlt,
          u8 virtual_bus_id)
{
 return -EINVAL;
}

#endif

#endif

Messung V0.5
C=95 H=93 G=93

¤ Dauer der Verarbeitung: 0.3 Sekunden  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.