123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100 |
- /**
- * Copyright (C) 2008, Creative Technology Ltd. All Rights Reserved.
- *
- * This source file is released under GPL v2 license (no other versions).
- * See the COPYING file included in the main directory of this source
- * distribution for the license terms and conditions.
- *
- * @File ctamixer.h
- *
- * @Brief
- * This file contains the definition of the Audio Mixer
- * resource management object.
- *
- * @Author Liu Chun
- * @Date May 21 2008
- *
- */
- #ifndef CTAMIXER_H
- #define CTAMIXER_H
- #include "ctresource.h"
- #include <linux/spinlock.h>
- #include <sound/core.h>
- /* Define the descriptor of a summation node resource */
- struct sum {
- struct rsc rsc; /* Basic resource info */
- unsigned char idx[8];
- };
- /* Define sum resource request description info */
- struct sum_desc {
- unsigned int msr;
- };
- struct sum_mgr {
- struct rsc_mgr mgr; /* Basic resource manager info */
- struct snd_card *card; /* pointer to this card */
- spinlock_t mgr_lock;
- /* request one sum resource */
- int (*get_sum)(struct sum_mgr *mgr,
- const struct sum_desc *desc, struct sum **rsum);
- /* return one sum resource */
- int (*put_sum)(struct sum_mgr *mgr, struct sum *sum);
- };
- /* Constructor and destructor of daio resource manager */
- int sum_mgr_create(struct hw *hw, struct sum_mgr **rsum_mgr);
- int sum_mgr_destroy(struct sum_mgr *sum_mgr);
- /* Define the descriptor of a amixer resource */
- struct amixer_rsc_ops;
- struct amixer {
- struct rsc rsc; /* Basic resource info */
- unsigned char idx[8];
- struct rsc *input; /* pointer to a resource acting as source */
- struct sum *sum; /* Put amixer output to this summation node */
- const struct amixer_rsc_ops *ops; /* AMixer specific operations */
- };
- struct amixer_rsc_ops {
- int (*set_input)(struct amixer *amixer, struct rsc *rsc);
- int (*set_scale)(struct amixer *amixer, unsigned int scale);
- int (*set_invalid_squash)(struct amixer *amixer, unsigned int iv);
- int (*set_sum)(struct amixer *amixer, struct sum *sum);
- int (*commit_write)(struct amixer *amixer);
- /* Only for interleaved recording */
- int (*commit_raw_write)(struct amixer *amixer);
- int (*setup)(struct amixer *amixer, struct rsc *input,
- unsigned int scale, struct sum *sum);
- int (*get_scale)(struct amixer *amixer);
- };
- /* Define amixer resource request description info */
- struct amixer_desc {
- unsigned int msr;
- };
- struct amixer_mgr {
- struct rsc_mgr mgr; /* Basic resource manager info */
- struct snd_card *card; /* pointer to this card */
- spinlock_t mgr_lock;
- /* request one amixer resource */
- int (*get_amixer)(struct amixer_mgr *mgr,
- const struct amixer_desc *desc,
- struct amixer **ramixer);
- /* return one amixer resource */
- int (*put_amixer)(struct amixer_mgr *mgr, struct amixer *amixer);
- };
- /* Constructor and destructor of amixer resource manager */
- int amixer_mgr_create(struct hw *hw, struct amixer_mgr **ramixer_mgr);
- int amixer_mgr_destroy(struct amixer_mgr *amixer_mgr);
- #endif /* CTAMIXER_H */
|