~hui.wang/alsa-driver/tiwai-trunk-fgit

« back to all changes in this revision

Viewing changes to pci/ctxfi/ctresource.h

  • Committer: Hui Wang
  • Date: 2018-06-07 01:04:04 UTC
  • Revision ID: git-v1:baf13208df10376d9e4588ad3524aeb3c9973bdf
sync the alsa hda driver from Takashi's tree

Signed-off-by: Hui Wang <hui.wang@canonical.com>

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/**
 
2
 * Copyright (C) 2008, Creative Technology Ltd. All Rights Reserved.
 
3
 *
 
4
 * This source file is released under GPL v2 license (no other versions).
 
5
 * See the COPYING file included in the main directory of this source
 
6
 * distribution for the license terms and conditions.
 
7
 *
 
8
 * @File        ctresource.h
 
9
 *
 
10
 * @Brief
 
11
 * This file contains the definition of generic hardware resources for
 
12
 * resource management.
 
13
 *
 
14
 * @Author      Liu Chun
 
15
 * @Date        May 13 2008
 
16
 *
 
17
 */
 
18
 
 
19
#ifndef CTRESOURCE_H
 
20
#define CTRESOURCE_H
 
21
 
 
22
#include <linux/types.h>
 
23
 
 
24
enum RSCTYP {
 
25
        SRC,
 
26
        SRCIMP,
 
27
        AMIXER,
 
28
        SUM,
 
29
        DAIO,
 
30
        NUM_RSCTYP      /* This must be the last one and less than 16 */
 
31
};
 
32
 
 
33
struct rsc_ops;
 
34
 
 
35
struct rsc {
 
36
        u32 idx:12;     /* The index of a resource */
 
37
        u32 type:4;     /* The type (RSCTYP) of a resource */
 
38
        u32 conj:12;    /* Current conjugate index */
 
39
        u32 msr:4;      /* The Master Sample Rate a resource working on */
 
40
        void *ctrl_blk; /* Chip specific control info block for a resource */
 
41
        struct hw *hw;  /* Chip specific object for hardware access means */
 
42
        const struct rsc_ops *ops;      /* Generic resource operations */
 
43
};
 
44
 
 
45
struct rsc_ops {
 
46
        int (*master)(struct rsc *rsc); /* Move to master resource */
 
47
        int (*next_conj)(struct rsc *rsc); /* Move to next conjugate resource */
 
48
        int (*index)(const struct rsc *rsc); /* Return the index of resource */
 
49
        /* Return the output slot number */
 
50
        int (*output_slot)(const struct rsc *rsc);
 
51
};
 
52
 
 
53
int
 
54
rsc_init(struct rsc *rsc, u32 idx, enum RSCTYP type, u32 msr, struct hw *hw);
 
55
int rsc_uninit(struct rsc *rsc);
 
56
 
 
57
struct rsc_mgr {
 
58
        enum RSCTYP type; /* The type (RSCTYP) of resource to manage */
 
59
        unsigned int amount; /* The total amount of a kind of resource */
 
60
        unsigned int avail; /* The amount of currently available resources */
 
61
        unsigned char *rscs; /* The bit-map for resource allocation */
 
62
        void *ctrl_blk; /* Chip specific control info block */
 
63
        struct hw *hw; /* Chip specific object for hardware access */
 
64
};
 
65
 
 
66
/* Resource management is based on bit-map mechanism */
 
67
int rsc_mgr_init(struct rsc_mgr *mgr, enum RSCTYP type,
 
68
                 unsigned int amount, struct hw *hw);
 
69
int rsc_mgr_uninit(struct rsc_mgr *mgr);
 
70
int mgr_get_resource(struct rsc_mgr *mgr, unsigned int n, unsigned int *ridx);
 
71
int mgr_put_resource(struct rsc_mgr *mgr, unsigned int n, unsigned int idx);
 
72
 
 
73
#endif /* CTRESOURCE_H */