Add the rt linux 4.1.3-rt3 as base
[kvmfornfv.git] / kernel / arch / blackfin / include / asm / bfin_sport.h
1 /*
2  * bfin_sport.h - interface to Blackfin SPORTs
3  *
4  * Copyright 2004-2009 Analog Devices Inc.
5  *
6  * Licensed under the GPL-2 or later.
7  */
8 #ifndef __BFIN_SPORT_H__
9 #define __BFIN_SPORT_H__
10
11
12 #include <linux/types.h>
13 #include <uapi/asm/bfin_sport.h>
14
15 /*
16  * All Blackfin system MMRs are padded to 32bits even if the register
17  * itself is only 16bits.  So use a helper macro to streamline this.
18  */
19 #define __BFP(m) u16 m; u16 __pad_##m
20 struct sport_register {
21         __BFP(tcr1);
22         __BFP(tcr2);
23         __BFP(tclkdiv);
24         __BFP(tfsdiv);
25         union {
26                 u32 tx32;
27                 u16 tx16;
28         };
29         u32 __pad_tx;
30         union {
31                 u32 rx32;       /* use the anomaly wrapper below */
32                 u16 rx16;
33         };
34         u32 __pad_rx;
35         __BFP(rcr1);
36         __BFP(rcr2);
37         __BFP(rclkdiv);
38         __BFP(rfsdiv);
39         __BFP(stat);
40         __BFP(chnl);
41         __BFP(mcmc1);
42         __BFP(mcmc2);
43         u32 mtcs0;
44         u32 mtcs1;
45         u32 mtcs2;
46         u32 mtcs3;
47         u32 mrcs0;
48         u32 mrcs1;
49         u32 mrcs2;
50         u32 mrcs3;
51 };
52 #undef __BFP
53
54 struct bfin_snd_platform_data {
55         const unsigned short *pin_req;
56 };
57
58 #define bfin_read_sport_rx32(base) \
59 ({ \
60         struct sport_register *__mmrs = (void *)base; \
61         u32 __ret; \
62         unsigned long flags; \
63         if (ANOMALY_05000473) \
64                 local_irq_save(flags); \
65         __ret = __mmrs->rx32; \
66         if (ANOMALY_05000473) \
67                 local_irq_restore(flags); \
68         __ret; \
69 })
70
71 #endif