powerpc/5200: add LocalPlus bus FIFO device driver
This is a driver for the FIFO device on the LocalPlus bus on an mpc5200 system. The driver supports programmed I/O through the FIFO as well as setting up DMA via the BestComm engine through the FIFO. Signed-off-by: John Bonesio <bones@secretlab.ca> Signed-off-by: Grant Likely <grant.likely@secretlab.ca>
このコミットが含まれているのは:
@@ -283,6 +283,45 @@ extern int mpc52xx_gpt_start_timer(struct mpc52xx_gpt_priv *gpt, int period,
|
||||
int continuous);
|
||||
extern void mpc52xx_gpt_stop_timer(struct mpc52xx_gpt_priv *gpt);
|
||||
|
||||
/* mpc52xx_lpbfifo.c */
|
||||
#define MPC52XX_LPBFIFO_FLAG_READ (0)
|
||||
#define MPC52XX_LPBFIFO_FLAG_WRITE (1<<0)
|
||||
#define MPC52XX_LPBFIFO_FLAG_NO_INCREMENT (1<<1)
|
||||
#define MPC52XX_LPBFIFO_FLAG_NO_DMA (1<<2)
|
||||
#define MPC52XX_LPBFIFO_FLAG_POLL_DMA (1<<3)
|
||||
|
||||
struct mpc52xx_lpbfifo_request {
|
||||
struct list_head list;
|
||||
|
||||
/* localplus bus address */
|
||||
unsigned int cs;
|
||||
size_t offset;
|
||||
|
||||
/* Memory address */
|
||||
void *data;
|
||||
phys_addr_t data_phys;
|
||||
|
||||
/* Details of transfer */
|
||||
size_t size;
|
||||
size_t pos; /* current position of transfer */
|
||||
int flags;
|
||||
|
||||
/* What to do when finished */
|
||||
void (*callback)(struct mpc52xx_lpbfifo_request *);
|
||||
|
||||
void *priv; /* Driver private data */
|
||||
|
||||
/* statistics */
|
||||
int irq_count;
|
||||
int irq_ticks;
|
||||
u8 last_byte;
|
||||
int buffer_not_done_cnt;
|
||||
};
|
||||
|
||||
extern int mpc52xx_lpbfifo_submit(struct mpc52xx_lpbfifo_request *req);
|
||||
extern void mpc52xx_lpbfifo_abort(struct mpc52xx_lpbfifo_request *req);
|
||||
extern void mpc52xx_lpbfifo_poll(void);
|
||||
|
||||
/* mpc52xx_pic.c */
|
||||
extern void mpc52xx_init_irq(void);
|
||||
extern unsigned int mpc52xx_get_irq(void);
|
||||
|
新しいイシューから参照
ユーザーをブロックする