Zephyr API Documentation 4.3.99
A Scalable Open Source RTOS
Loading...
Searching...
No Matches
uaol.h
Go to the documentation of this file.
1/*
2 * Copyright (c) 2024 Intel Corporation
3 *
4 * SPDX-License-Identifier: Apache-2.0
5 */
6
11
12#ifndef ZEPHYR_INCLUDE_DRIVERS_UAOL_H_
13#define ZEPHYR_INCLUDE_DRIVERS_UAOL_H_
14
15#include <stdint.h>
16#include <zephyr/device.h>
17
26
42
49
55typedef int (*uaol_api_config)(const struct device *dev, int stream, struct uaol_config *config);
56
57typedef int (*uaol_api_start)(const struct device *dev, int stream);
58
59typedef int (*uaol_api_stop)(const struct device *dev, int stream);
60
61typedef int (*uaol_api_program_ep_table)(const struct device *dev, int stream,
62 struct uaol_ep_table_entry entry, bool valid);
63
64typedef int (*uaol_api_get_capabilities)(const struct device *dev, struct uaol_capabilities *caps);
65
66__subsystem struct uaol_driver_api {
67 uaol_api_config config;
68 uaol_api_start start;
69 uaol_api_stop stop;
70 uaol_api_program_ep_table program_ep_table;
71 uaol_api_get_capabilities get_capabilities;
72};
76
86static inline int uaol_config(const struct device *dev, int stream, struct uaol_config *cfg)
87{
88 const struct uaol_driver_api *api = dev->api;
89
90 return api->config(dev, stream, cfg);
91}
92
101static inline int uaol_start(const struct device *dev, int stream)
102{
103 const struct uaol_driver_api *api = dev->api;
104
105 return api->start(dev, stream);
106}
107
116static inline int uaol_stop(const struct device *dev, int stream)
117{
118 const struct uaol_driver_api *api = dev->api;
119
120 return api->stop(dev, stream);
121}
122
133static inline int uaol_program_ep_table(const struct device *dev, int stream,
134 struct uaol_ep_table_entry entry, bool valid)
135{
136 const struct uaol_driver_api *api = dev->api;
137
138 return api->program_ep_table(dev, stream, entry, valid);
139}
140
149static inline int uaol_get_capabilities(const struct device *dev, struct uaol_capabilities *caps)
150{
151 const struct uaol_driver_api *api = dev->api;
152
153 return api->get_capabilities(dev, caps);
154}
155
166int uaol_get_mapped_hda_link_stream_id(const struct device *dev, int uaol_stream_id);
167
168#endif /* ZEPHYR_INCLUDE_DRIVERS_UAOL_H_ */
#define bool
Definition stdbool.h:13
__UINT32_TYPE__ uint32_t
Definition stdint.h:90
__UINT8_TYPE__ uint8_t
Definition stdint.h:88
__UINT16_TYPE__ uint16_t
Definition stdint.h:89
Runtime device structure (in ROM) per driver instance.
Definition device.h:513
const void * api
Address of the API structure exposed by the device instance.
Definition device.h:519
UAOL hardware capabilities.
Definition uaol.h:19
uint32_t max_rx_fifo_size
Max RX FIFO size.
Definition uaol.h:24
uint32_t input_streams
Number of supported input streams.
Definition uaol.h:20
uint32_t bidirectional_streams
Number of supported bidir streams.
Definition uaol.h:22
uint32_t max_tx_fifo_size
Max TX FIFO size.
Definition uaol.h:23
uint32_t output_streams
Number of supported output streams.
Definition uaol.h:21
UAOL stream configuration data.
Definition uaol.h:28
uint16_t art_divider_m
USB ART divider multiplication value.
Definition uaol.h:32
uint32_t sample_rate
Audio sample rate (frames per second ).
Definition uaol.h:34
uint16_t fifo_start_offset
UAOL FIFO start address offset.
Definition uaol.h:39
uint32_t sio_credit_size
SIO credit packet size in bytes.
Definition uaol.h:38
uint32_t channels
Number of audio channels.
Definition uaol.h:35
uint8_t xhci_function
xHCI controller function
Definition uaol.h:31
uint8_t xhci_bus
xHCI controller bus
Definition uaol.h:29
uint16_t art_divider_n
USB ART divider division value.
Definition uaol.h:33
uint8_t xhci_device
xHCI controller device
Definition uaol.h:30
uint32_t sample_bits
Audio sample (container) size in bits.
Definition uaol.h:36
uint16_t channel_map
HDA link stream and channels mapping for UAOL FIFO.
Definition uaol.h:40
uint32_t service_interval
Service interval for PCM stream operation in us.
Definition uaol.h:37
UAOL stream endpoint table entry.
Definition uaol.h:44
uint32_t split_ep
Split endpoint flag.
Definition uaol.h:47
uint32_t usb_ep_address
USB endpoint number.
Definition uaol.h:45
uint32_t device_slot_number
Slot number.
Definition uaol.h:46
static int uaol_program_ep_table(const struct device *dev, int stream, struct uaol_ep_table_entry entry, bool valid)
Program an endpoint table entry for UAOL individual stream.
Definition uaol.h:133
int uaol_get_mapped_hda_link_stream_id(const struct device *dev, int uaol_stream_id)
Get the HDA link stream ID mapped in HW to the UAOL stream ID.
static int uaol_get_capabilities(const struct device *dev, struct uaol_capabilities *caps)
Query UAOL hardware capabilities.
Definition uaol.h:149
static int uaol_config(const struct device *dev, int stream, struct uaol_config *cfg)
Set UAOL individual stream configuration.
Definition uaol.h:86
static int uaol_stop(const struct device *dev, int stream)
Stop UAOL individual stream operation.
Definition uaol.h:116
static int uaol_start(const struct device *dev, int stream)
Start UAOL individual stream operation.
Definition uaol.h:101