cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

ctdaio.h (3274B)


      1/* SPDX-License-Identifier: GPL-2.0-only */
      2/*
      3 * Copyright (C) 2008, Creative Technology Ltd. All Rights Reserved.
      4 *
      5 * @File	ctdaio.h
      6 *
      7 * @Brief
      8 * This file contains the definition of Digital Audio Input Output
      9 * resource management object.
     10 *
     11 * @Author	Liu Chun
     12 * @Date 	May 23 2008
     13 */
     14
     15#ifndef CTDAIO_H
     16#define CTDAIO_H
     17
     18#include "ctresource.h"
     19#include "ctimap.h"
     20#include <linux/spinlock.h>
     21#include <linux/list.h>
     22#include <sound/core.h>
     23
     24/* Define the descriptor of a daio resource */
     25enum DAIOTYP {
     26	LINEO1,
     27	LINEO2,
     28	LINEO3,
     29	LINEO4,
     30	SPDIFOO,	/* S/PDIF Out (Flexijack/Optical) */
     31	LINEIM,
     32	SPDIFIO,	/* S/PDIF In (Flexijack/Optical) on the card */
     33	MIC,		/* Dedicated mic on Titanium HD */
     34	SPDIFI1,	/* S/PDIF In on internal Drive Bay */
     35	NUM_DAIOTYP
     36};
     37
     38struct dao_rsc_ops;
     39struct dai_rsc_ops;
     40struct daio_mgr;
     41
     42struct daio {
     43	struct rsc rscl;	/* Basic resource info for left TX/RX */
     44	struct rsc rscr;	/* Basic resource info for right TX/RX */
     45	enum DAIOTYP type;
     46};
     47
     48struct dao {
     49	struct daio daio;
     50	const struct dao_rsc_ops *ops;	/* DAO specific operations */
     51	struct imapper **imappers;
     52	struct daio_mgr *mgr;
     53	struct hw *hw;
     54	void *ctrl_blk;
     55};
     56
     57struct dai {
     58	struct daio daio;
     59	const struct dai_rsc_ops *ops;	/* DAI specific operations */
     60	struct hw *hw;
     61	void *ctrl_blk;
     62};
     63
     64struct dao_desc {
     65	unsigned int msr:4;
     66	unsigned int passthru:1;
     67};
     68
     69struct dao_rsc_ops {
     70	int (*set_spos)(struct dao *dao, unsigned int spos);
     71	int (*commit_write)(struct dao *dao);
     72	int (*get_spos)(struct dao *dao, unsigned int *spos);
     73	int (*reinit)(struct dao *dao, const struct dao_desc *desc);
     74	int (*set_left_input)(struct dao *dao, struct rsc *input);
     75	int (*set_right_input)(struct dao *dao, struct rsc *input);
     76	int (*clear_left_input)(struct dao *dao);
     77	int (*clear_right_input)(struct dao *dao);
     78};
     79
     80struct dai_rsc_ops {
     81	int (*set_srt_srcl)(struct dai *dai, struct rsc *src);
     82	int (*set_srt_srcr)(struct dai *dai, struct rsc *src);
     83	int (*set_srt_msr)(struct dai *dai, unsigned int msr);
     84	int (*set_enb_src)(struct dai *dai, unsigned int enb);
     85	int (*set_enb_srt)(struct dai *dai, unsigned int enb);
     86	int (*commit_write)(struct dai *dai);
     87};
     88
     89/* Define daio resource request description info */
     90struct daio_desc {
     91	unsigned int type:4;
     92	unsigned int msr:4;
     93	unsigned int passthru:1;
     94};
     95
     96struct daio_mgr {
     97	struct rsc_mgr mgr;	/* Basic resource manager info */
     98	struct snd_card *card;	/* pointer to this card */
     99	spinlock_t mgr_lock;
    100	spinlock_t imap_lock;
    101	struct list_head imappers;
    102	struct imapper *init_imap;
    103	unsigned int init_imap_added;
    104
    105	 /* request one daio resource */
    106	int (*get_daio)(struct daio_mgr *mgr,
    107			const struct daio_desc *desc, struct daio **rdaio);
    108	/* return one daio resource */
    109	int (*put_daio)(struct daio_mgr *mgr, struct daio *daio);
    110	int (*daio_enable)(struct daio_mgr *mgr, struct daio *daio);
    111	int (*daio_disable)(struct daio_mgr *mgr, struct daio *daio);
    112	int (*imap_add)(struct daio_mgr *mgr, struct imapper *entry);
    113	int (*imap_delete)(struct daio_mgr *mgr, struct imapper *entry);
    114	int (*commit_write)(struct daio_mgr *mgr);
    115};
    116
    117/* Constructor and destructor of daio resource manager */
    118int daio_mgr_create(struct hw *hw, struct daio_mgr **rdaio_mgr);
    119int daio_mgr_destroy(struct daio_mgr *daio_mgr);
    120
    121#endif /* CTDAIO_H */