Linux kernel mirror (for testing)
git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel
os
linux
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
20struct 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
54struct 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