12#ifndef ZEPHYR_INCLUDE_DRIVERS_UAOL_H_
13#define ZEPHYR_INCLUDE_DRIVERS_UAOL_H_
55typedef int (*uaol_api_config)(
const struct device *dev,
int stream,
struct uaol_config *config);
57typedef int (*uaol_api_start)(
const struct device *dev,
int stream);
59typedef int (*uaol_api_stop)(
const struct device *dev,
int stream);
61typedef int (*uaol_api_program_ep_table)(
const struct device *dev,
int stream,
66__subsystem
struct uaol_driver_api {
67 uaol_api_config config;
70 uaol_api_program_ep_table program_ep_table;
71 uaol_api_get_capabilities get_capabilities;
88 const struct uaol_driver_api *api = dev->
api;
90 return api->config(dev, stream, cfg);
103 const struct uaol_driver_api *api = dev->
api;
105 return api->start(dev, stream);
118 const struct uaol_driver_api *api = dev->
api;
120 return api->stop(dev, stream);
136 const struct uaol_driver_api *api = dev->
api;
138 return api->program_ep_table(dev, stream, entry, valid);
151 const struct uaol_driver_api *api = dev->
api;
153 return api->get_capabilities(dev, caps);
#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