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

Quelle  sprd-mcdt.h   Sprache: C

 
// SPDX-License-Identifier: GPL-2.0

#ifndef __SPRD_MCDT_H
#define __SPRD_MCDT_H

enum sprd_mcdt_channel_type {
 SPRD_MCDT_DAC_CHAN,
 SPRD_MCDT_ADC_CHAN,
 SPRD_MCDT_UNKNOWN_CHAN,
};

enum sprd_mcdt_dma_chan {
 SPRD_MCDT_DMA_CH0,
 SPRD_MCDT_DMA_CH1,
 SPRD_MCDT_DMA_CH2,
 SPRD_MCDT_DMA_CH3,
 SPRD_MCDT_DMA_CH4,
};

struct sprd_mcdt_chan_callback {
 void (*notify)(void *data);
 void *data;
};

/**
 * struct sprd_mcdt_chan - this struct represents a single channel instance
 * @mcdt: the mcdt controller
 * @id: channel id
 * @fifo_phys: channel fifo physical address which is used for DMA transfer
 * @type: channel type
 * @cb: channel fifo interrupt's callback interface to notify the fifo events
 * @dma_enable: indicate if use DMA mode to transfer data
 * @int_enable: indicate if use interrupt mode to notify users to read or
 * write data manually
 * @list: used to link into the global list
 *
 * Note: users should not modify any members of this structure.
 */

struct sprd_mcdt_chan {
 struct sprd_mcdt_dev *mcdt;
 u8 id;
 unsigned long fifo_phys;
 enum sprd_mcdt_channel_type type;
 enum sprd_mcdt_dma_chan dma_chan;
 struct sprd_mcdt_chan_callback *cb;
 bool dma_enable;
 bool int_enable;
 struct list_head list;
};

#if IS_ENABLED(CONFIG_SND_SOC_SPRD_MCDT)
struct sprd_mcdt_chan *sprd_mcdt_request_chan(u8 channel,
           enum sprd_mcdt_channel_type type);
void sprd_mcdt_free_chan(struct sprd_mcdt_chan *chan);

int sprd_mcdt_chan_write(struct sprd_mcdt_chan *chan, char *tx_buf, u32 size);
int sprd_mcdt_chan_read(struct sprd_mcdt_chan *chan, char *rx_buf, u32 size);
int sprd_mcdt_chan_int_enable(struct sprd_mcdt_chan *chan, u32 water_mark,
         struct sprd_mcdt_chan_callback *cb);
void sprd_mcdt_chan_int_disable(struct sprd_mcdt_chan *chan);

int sprd_mcdt_chan_dma_enable(struct sprd_mcdt_chan *chan,
         enum sprd_mcdt_dma_chan dma_chan, u32 water_mark);
void sprd_mcdt_chan_dma_disable(struct sprd_mcdt_chan *chan);

#else

struct sprd_mcdt_chan *sprd_mcdt_request_chan(u8 channel,
           enum sprd_mcdt_channel_type type)
{
 return NULL;
}

void sprd_mcdt_free_chan(struct sprd_mcdt_chan *chan)
{ }

int sprd_mcdt_chan_write(struct sprd_mcdt_chan *chan, char *tx_buf, u32 size)
{
 return -EINVAL;
}

int sprd_mcdt_chan_read(struct sprd_mcdt_chan *chan, char *rx_buf, u32 size)
{
 return 0;
}

int sprd_mcdt_chan_int_enable(struct sprd_mcdt_chan *chan, u32 water_mark,
         struct sprd_mcdt_chan_callback *cb)
{
 return -EINVAL;
}

void sprd_mcdt_chan_int_disable(struct sprd_mcdt_chan *chan)
{ }

int sprd_mcdt_chan_dma_enable(struct sprd_mcdt_chan *chan,
         enum sprd_mcdt_dma_chan dma_chan, u32 water_mark)
{
 return -EINVAL;
}

void sprd_mcdt_chan_dma_disable(struct sprd_mcdt_chan *chan)
{ }

#endif

#endif /* __SPRD_MCDT_H */

Messung V0.5
C=98 H=100 G=98

¤ Dauer der Verarbeitung: 0.12 Sekunden  (vorverarbeitet)  ¤

*© 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.