72 строки
1.2 KiB
C
72 строки
1.2 KiB
C
/*
|
|
* bfin_sport.h - interface to Blackfin SPORTs
|
|
*
|
|
* Copyright 2004-2009 Analog Devices Inc.
|
|
*
|
|
* Licensed under the GPL-2 or later.
|
|
*/
|
|
#ifndef __BFIN_SPORT_H__
|
|
#define __BFIN_SPORT_H__
|
|
|
|
|
|
#include <linux/types.h>
|
|
#include <uapi/asm/bfin_sport.h>
|
|
|
|
/*
|
|
* All Blackfin system MMRs are padded to 32bits even if the register
|
|
* itself is only 16bits. So use a helper macro to streamline this.
|
|
*/
|
|
#define __BFP(m) u16 m; u16 __pad_##m
|
|
struct sport_register {
|
|
__BFP(tcr1);
|
|
__BFP(tcr2);
|
|
__BFP(tclkdiv);
|
|
__BFP(tfsdiv);
|
|
union {
|
|
u32 tx32;
|
|
u16 tx16;
|
|
};
|
|
u32 __pad_tx;
|
|
union {
|
|
u32 rx32; /* use the anomaly wrapper below */
|
|
u16 rx16;
|
|
};
|
|
u32 __pad_rx;
|
|
__BFP(rcr1);
|
|
__BFP(rcr2);
|
|
__BFP(rclkdiv);
|
|
__BFP(rfsdiv);
|
|
__BFP(stat);
|
|
__BFP(chnl);
|
|
__BFP(mcmc1);
|
|
__BFP(mcmc2);
|
|
u32 mtcs0;
|
|
u32 mtcs1;
|
|
u32 mtcs2;
|
|
u32 mtcs3;
|
|
u32 mrcs0;
|
|
u32 mrcs1;
|
|
u32 mrcs2;
|
|
u32 mrcs3;
|
|
};
|
|
#undef __BFP
|
|
|
|
struct bfin_snd_platform_data {
|
|
const unsigned short *pin_req;
|
|
};
|
|
|
|
#define bfin_read_sport_rx32(base) \
|
|
({ \
|
|
struct sport_register *__mmrs = (void *)base; \
|
|
u32 __ret; \
|
|
unsigned long flags; \
|
|
if (ANOMALY_05000473) \
|
|
local_irq_save(flags); \
|
|
__ret = __mmrs->rx32; \
|
|
if (ANOMALY_05000473) \
|
|
local_irq_restore(flags); \
|
|
__ret; \
|
|
})
|
|
|
|
#endif
|